2016-09-07 16 views
0

1つのブック/複数のシートのすべてのデータを別のブック/複数のシートにコピーするマクロを作成しています。最初のスプレッドシートには、Sun-Satという7つのワークシートがあります。 2番目のワークシートには10​​枚のワークシートがあり、3枚のワークシートは無関係で、残りの7枚のワークシートは日曜日から土曜日に付けられています。VBA:Forループ/入れ子

ループごとに個別にテストし、必要に応じて機能します。それらを結合しようとすると、内側の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などと等しくなります。

+0

あなたは私にそれを打つ!私はまた、私の説明では、Excelがスタンドアローンのマルチスレッドに対応していないと言っています。なぜなら、彼のネストされたステートメントが彼に反して直感的に感じられた理由です。私たちのコードは1:1でも同じです。 – Tyeler

+0

ありがとうScott - 私は本当にそれをovercomplicatingしていた! – c3nixon

関連する問題