2016-09-07 243 views
0

我正在創建一個宏,將從一個工作簿/多個工作表複製到另一個工作簿/多個工作表中的所有數據。第一個電子表格有7個名爲Sun-Sat的工作表。第二個工作表有10個工作表3個工作表是不相關的,其他7個工作表被命名爲星期日 - 星期六。VBA:嵌套/循環

我分別測試每個循環,並根據需要進行工作。當試圖合併它們時,內部for語句在退出前重複並循環所有日期。我已經試過將退出功能合併爲跳出內部功能,但是當返回到內部功能時,它不會將+1增加到下一個日期。有沒有簡單的方法來從外部for語句添加+1?

enter code here 
Dim wsShortDays, wsFullDays As Variant 
Dim wsShortDaysCrnt, wsFullDaysCrnt As Long 
Dim SD, FD As Long 

wsShortDays = Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat") 
wsFullDays = Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday") 

For FD = LBound(wsFullDays) To UBound(wsFullDays) 
    With wbk1.Worksheets(wsFullDays(FD)) 

     For SD = LBound(wsShortDays) To UBound(wsShortDays) 
      With wbk2.Worksheets(wsShortDays(SD)) 
       wbk2.Worksheets(wsShortDays(SD)).Activate 
       Range("A:H").Copy 
      End With 
      Exit For 
     Next SD 


     wbk1.Worksheets(wsFullDays(FD)).Activate 
     Range("C:J").PasteSpecial xlPasteAllUsingSourceTheme 
     SD = 1 
    End With 
Next FD 

回答

2

你不需要內環爲您的陣列同步只需使用相同的標號從第一環。這將等同SundaySun等等:

Dim wsShortDays As Variant, wsFullDays As Variant 
Dim FD As Long 

wsShortDays = Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat") 
wsFullDays = Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday") 

For FD = LBound(wsFullDays) To UBound(wsFullDays) 
    wbk2.Worksheets(wsShortDays(FD)).Range("A:H").Copy 
    wbk1.Worksheets(wsFullDays(FD)).Range("C:J").PasteSpecial xlPasteAllUsingSourceTheme 
Next FD 
+0

你打我吧!我與我的解釋也說,excel不能獨立的多線程,這就是爲什麼他的嵌套聲明感覺與他不直觀。我們的代碼雖然是1:1相同。 – Tyeler

+0

謝謝斯科特 - 我真的太過於複雜了! – c3nixon