Vba でスプレッドシートを参照する方法 (例付き)
VBA を使用して Excel ワークブック内のシートを移動するには、次の方法を使用できます。
方法 1: すべてのスプレッドシートを確認する
SubLoopSheets ()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Range("A1").Value = 100
Next ws
End Sub
この特定のマクロは、ブック内の各シートを調べて、各シートのセルA1の値を 100 に設定します。
方法 2: 特定のワークシートを除くすべてのワークシートを参照する
SubLoopSheets ()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
Select Case ws.Name
Case Is = "Sheet2", "Sheet3"
'Do not execute any code for these sheets
Case Else
ws.Range("A1").Value = 100
End Select
Next ws
End Sub
この特定のマクロは、ブック内の各シートをループし、 Sheet2およびSheet3というシートを除き、各シートのセルA1の値を 100 に設定します。
次の例は、4 つの空のシートを含む Excel ブックでこれらの各メソッドを実際に使用する方法を示しています。
例 1: すべてのワークシートを参照する
次のマクロを使用して、ワークブックの各シートのセルA1の値を 100 に設定できます。
SubLoopSheets ()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Range("A1").Value = 100
Next ws
このマクロを実行すると、ブックの各シートのセルA1の値は 100 になります。
例 2: 特定のワークシートを除くすべてのワークシートを参照する
各ワークシートを調べて、 Sheet2とSheet3というシートを除いて、各シートのセルA1の値を 100 に設定するとします。
これを行うには、次のマクロを作成できます。
SubLoopSheets ()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
Select Case ws.Name
Case Is = "Sheet2", "Sheet3"
'Do not execute any code for these sheets
Case Else
ws.Range("A1").Value = 100
End Select
Next ws
End Sub
このマクロを実行すると、 Sheet1とSheet4のセルA1の値が 100 であることがわかります。
ただし、 Case関数を使用してこれらのシートを無視したため、 Sheet2とSheet3にはセルA1の値がありません。
これらの例では、わかりやすくするために、各ワークシートを調べてセルの値を特定の値に設定していることに注意してください。
ただし、必要に応じて、 For Eachステートメントで同様の構文を使用して、各シートでより複雑なタスクを実行できます。
追加リソース
次のチュートリアルでは、VBA で他の一般的なタスクを実行する方法について説明します。
VBA: 範囲内の行数をカウントする方法
VBA: 特定のテキストを含むセルを数える方法
VBA: COUNTIF 関数と COUNTIFS 関数の書き方