<目次>
(1) VBAでシートをループする方法について
(1-1) 構文
(1-2) サンプルプログラム
(1) VBAでシートをループする方法について
(1-1) 構文
'#1.各シートをループ For i1 = 1 To [シート総数] '#1-1.ループ対象のシートに該当するか?のチェック If ThisWorkbook.Worksheets(i1).Name = "QA分析チーム" Or _ ThisWorkbook.Worksheets(i1).Name = "品質分析チーム" Or _ ThisWorkbook.Worksheets(i1).Name = "商品開発チーム" Then '# 対象シートを変数wTmpにセット Dim wTmp As Worksheet: Set wTmp = ThisWorkbook.Worksheets(i1) '#1-1-1.各シートに対する処理 '#### ココに処理を記述 #### '#### ココに処理を記述 #### '#### ココに処理を記述 #### End If Next i1
●構文説明
'#1.各シートをループ For i1 = 1 To [シート総数] '### ループの中身 ### Next i1
・②ループ対処のシートに該当するか?のチェック
'#1.各シートをループ For i1 = 1 To [シート総数] '#1-1.ループ対象のシートに該当するか?のチェック If ThisWorkbook.Worksheets(i1).Name = "QA分析チーム" Or _ ThisWorkbook.Worksheets(i1).Name = "品質分析チーム" Or _ ThisWorkbook.Worksheets(i1).Name = "商品開発チーム" Then '# 対象シートを変数wTmpにセット Dim wTmp As Worksheet: Set wTmp = ThisWorkbook.Worksheets(i1) '### ループの中身 ### End If Next i1
(1-2) サンプルプログラム
⇒VBAシートループ_サンプル
Sub LoopMultipleSheets() '#0-1.シートループの準備 Dim WS_Count As Integer 'ブック中の総シート数を保持する変数 Dim i1 As Integer 'シートループ用の変数 ' WS_Countにブックの総シート数をセット WS_Count = ThisWorkbook.Worksheets.Count '#0-2.集約先のシート準備 Dim wMerge As Worksheet: Set wMerge = ThisWorkbook.Worksheets("集約シート") ' 集約先シートの明細開始行 Dim counter As Integer: counter = 6 '#0-3.集約先シートの古い値をクリア Dim i0 As Integer 'ループ用の変数 For i0 = 6 To 1000 '# 最終行を検知したらループを抜ける If wMerge.Cells(i0, 3).Value = "E" Then Exit For End If '# 各行毎に値クリア Dim row As String: row = "C" & i0 & ":N" & i0 wMerge.Range(row).ClearContents Next '#1.各シートをループ For i1 = 1 To WS_Count '# デバッグ用 'Debug.Print ThisWorkbook.Worksheets(i1).Name '#1-1.ループ対象のシートに該当するか?のチェック If ThisWorkbook.Worksheets(i1).Name = "QA分析チーム" Or _ ThisWorkbook.Worksheets(i1).Name = "品質分析チーム" Or _ ThisWorkbook.Worksheets(i1).Name = "商品開発チーム" Then '# デバッグ用 'Debug.Print ThisWorkbook.Worksheets(i1).Name '# 対象のシートを変数にセット Dim wTmp As Worksheet: Set wTmp = ThisWorkbook.Worksheets(i1) '#1-1-1.対象シートの行をループ For j1 = 6 To 1000 '# 最終行を検知したらループを抜ける If wTmp.Cells(j1, 3).Value = "E" Then Exit For End If '#1-1-1-1.各値を転記 ' Category1~3の転記 wMerge.Cells(counter, 1).Value = wTmp.Cells(j1, 1).Value wMerge.Cells(counter, 2).Value = wTmp.Cells(j1, 2).Value wMerge.Cells(counter, 3).Value = wTmp.Cells(j1, 3).Value wMerge.Cells(counter, 4).Value = wTmp.Cells(j1, 4).Value wMerge.Cells(counter, 5).Value = wTmp.Cells(j1, 5).Value wMerge.Cells(counter, 6).Value = wTmp.Cells(j1, 6).Value ' 担当者 wMerge.Cells(counter, 9).Value = wTmp.Cells(j1, 9).Value ' 開始予定、終了予定、開始実績、終了実績 wMerge.Cells(counter, 10).Value = wTmp.Cells(j1, 10).Value wMerge.Cells(counter, 11).Value = wTmp.Cells(j1, 11).Value wMerge.Cells(counter, 12).Value = wTmp.Cells(j1, 12).Value wMerge.Cells(counter, 13).Value = wTmp.Cells(j1, 13).Value counter = counter + 1 Next j1 End If Next i1 End Sub