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: 特定のワークシートを除くすべてのワークシートを参照する

各ワークシートを調べて、 Sheet2Sheet3というシートを除いて、各シートのセル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

このマクロを実行すると、 Sheet1Sheet4のセルA1の値が 100 であることがわかります。

ただし、 Case関数を使用してこれらのシートを無視したため、 Sheet2Sheet3にはセルA1の値がありません。

これらの例では、わかりやすくするために、各ワークシートを調べてセルの値を特定の値に設定していることに注意してください。

ただし、必要に応じて、 For Eachステートメントで同様の構文を使用して、各シートでより複雑なタスクを実行できます。

追加リソース

次のチュートリアルでは、VBA で他の一般的なタスクを実行する方法について説明します。

VBA: 範囲内の行数をカウントする方法
VBA: 特定のテキストを含むセルを数える方法
VBA: COUNTIF 関数と COUNTIFS 関数の書き方

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です