2016-09-07 3 views
0

하나의 통합 문서/여러 시트의 모든 데이터를 다른 통합 문서/여러 시트로 복사하는 매크로를 만듭니다. 첫 번째 스프레드 시트에는 Sun-Sat이라는 7 개의 워크 시트가 있습니다. 두 번째 워크 시트에는 10 개의 워크 시트가 있으며 3 개의 워크 시트는 관련이 없으며 다른 7 개의 워크 시트는 일요일 - 토요일로 지정됩니다.VBA : 중첩 For/Loop

각 루프를 개별적으로 테스트했으며 필요에 따라 작동합니다. 이들을 결합하려고 할 때 inner 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

감사합니다 Scott - 나는 그것을 정말로 지나치게 복잡하게 만들고 있었다! – c3nixon