返回列表 上一主題 發帖

請簡化錄製的程式碼

請簡化錄製的程式碼

本帖最後由 ziv976688 於 2021-7-23 12:51 編輯

'複製指定的DATA!A:I範圍,貼上6個工作表的AU2
Sheets("DATA").Range("A1850:I1875").Select
        Selection.Copy
        Sheets(Array("準3進4", "準4進5", "準5進6", "準6進7", "準7進8")).Select
        .Range("AU2").Select
        ActiveSheet.Paste
謝謝 !

回復 9# ML089
版主 :
下列提問,懇請您指導 ~
http://forum.twbts.com/thread-23273-1-1.html
謝謝您 ! 晚安

TOP

回復 9# ML089
OK了
Sheets("DATA").Range("A" & Nrange - Num - Nrr(i), "I" & Nrange - 6).Copy Sheets(Srr(j)).Range(Prr(i))
改
Nrange - Nrr(i)
程式碼精簡很多,也學到許多語法。
謝謝您的耐心指導和幫忙~感恩

TOP

回復 9# ML089
版主 :您好!
複製範圍有誤差~ TEST_連續複製(測試).rar (85.57 KB)
謝謝您

TOP

Srr = Array("準3進4", "準4進5", "準5進6", "準6進7", "準7進8")
    Prr = Array("AU2", "BD2", "BM2", "BV2", "CE2")
    Nrr = Array(2, 3, 4, 5, 6)
    For i = 0 To 4
       For j = i To 4 '注意 已經修改過
            Sheets("DATA").Range("A" & Nrange - Num - Nrr(i), "I" & Nrange - 6).Copy Sheets(Srr(j)).Range(Prr(i))
            Application.Goto Sheets(Srr(j)).Range(Prr(i))
        Next
    Next
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

Application.Goto Sheets(Srr(j)).Range(Prr(i))
這是測試用可以刪除
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

本帖最後由 ML089 於 2021-7-23 23:07 編輯

回復 5# ziv976688

Nrange = "1878" 'InputBox("請輸入運算的迄止期數", "輸入期數")
    Num = "25" 'InputBox("請輸入複製的期距數範圍", "輸入距期數")

'    '連續複製
'    '列36
'    For Each xS In Sheets(Array("準3進4", "準4進5", "準5進6", "準6進7", "準7進8"))
'        Sheets("DATA").Range("A" & Nrange - Num - 2, "I" & Nrange - 2).Copy xS.Range("AU2")    '複製指定的DATA!A:I範圍貼上AU2
'    Next
'
'    For Each xS In Sheets(Array("準4進5", "準5進6", "準6進7", "準7進8"))
'        Sheets("DATA").Range("A" & Nrange - Num - 3, "I" & Nrange - 3).Copy xS.Range("BD2")
'    Next
'
'    For Each xS In Sheets(Array("準5進6", "準6進7", "準7進8"))
'        Sheets("DATA").Range("A" & Nrange - Num - 4, "I" & Nrange - 4).Copy xS.Range("BM2")
'    Next
'
'    For Each xS In Sheets(Array("準6進7", "準7進8"))
'        Sheets("DATA").Range("A" & Nrange - Num - 5, "I" & Nrange - 5).Copy xS.Range("BV2")
'    Next
'
'    For Each xS In Sheets("準7進8")
'        Sheets("DATA").Range("A" & Nrange - Num - 6, "I" & Nrange - 6).Copy xS.Range("CE2")
'    Next
   
   
    Srr = Array("準3進4", "準4進5", "準5進6", "準6進7", "準7進8")
    Prr = Array("AU2", "BD2", "BM2", "BV2", "CE2")
    Nrr = Array(2, 3, 4, 5, 6)
    For i = 0 To 4
       For j = i To 4 '注意 已經修改過
            Sheets("DATA").Range("A" & Nrange - Num - Nrr(i), "I" & Nrange - 6).Copy Sheets(Srr(j)).Range(Prr(i))
            Application.Goto Sheets(Srr(j)).Range(Prr(i))
        Next
    Next
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 4# samwang
謝謝您的指導~感恩
5樓的需求~懇請賜教。
謝謝您

TOP

本帖最後由 ziv976688 於 2021-7-23 16:41 編輯

回復 3# ML089
謝謝您的指導~感恩

另外我把程式碼貼到DATA!
請問:下列的程式碼可以如何再簡(優)化?
謝謝您
TEST_連續複製.rar (84.14 KB)
    Nrange = "1878" 'InputBox("請輸入運算的迄止期數", "輸入期數")
    Num = "25" 'InputBox("請輸入複製的期距數範圍", "輸入距期數")

'連續複製
'列36
    For Each xS In Sheets(Array("準3進4", "準4進5", "準5進6", "準6進7", "準7進8"))
        Sheets("DATA").Range("A" & Nrange - Num - 2, "I" & Nrange - 2).Copy xS.Range("AU2") '複製指定的DATA!A:I範圍貼上AU2
    Next
   
    For Each xS In Sheets(Array("準4進5", "準5進6", "準6進7", "準7進8"))
        Sheets("DATA").Range("A" & Nrange - Num - 3, "I" & Nrange - 3).Copy xS.Range("BD2")
    Next
   
    For Each xS In Sheets(Array("準5進6", "準6進7", "準7進8"))
        Sheets("DATA").Range("A" & Nrange - Num - 4, "I" & Nrange - 4).Copy xS.Range("BM2")
    Next

    For Each xS In Sheets(Array("準6進7", "準7進8"))
        Sheets("DATA").Range("A" & Nrange - Num - 5, "I" & Nrange - 5).Copy xS.Range("BV2")
    Next
        
    For Each xS In Sheets("準7進8")
        Sheets("DATA").Range("A" & Nrange - Num - 6, "I" & Nrange - 6).Copy xS.Range("CE2")
    Next

TOP

回復 2# ziv976688


Sub test()
For Each ws In Sheets(Array("準3進4", "準4進5", "準5進6", "準6進7", "準7進8"))
    Set Rng = ws.[AU2]
    Sheets("DATA").Range("A1850:I1875").Copy Rng
Next
End Sub

TOP

        靜思自在 : 生氣,就是拿別人的過錯來懲罰自己。
返回列表 上一主題