Worksheetオブジェクトの取得

広告

ワークシートを表すオブジェクトはWorksheetオブジェクトです。ワークシートは現在作業しているブックに含まれるワークシートの他、別のブックのワークシートでも取り出すことが出来ます。

Worksheetオブジェクトを取得するには、Applicationオブジェクト又はWorkbookオブジェクトの「Worsheets」プロパティを使います。

Dim ワークシート As Worksheet

Set ワークシート = オブジェクト.Worksheets(インデックス番号)

Applicationオブジェクトの「Worksheets」プロパティを使った場合には現在作業しているブックに含まれるワークシートが対象となります。オブジェクトを省略した場合も同様です。Workbookオブジェクトは別のブックに含まれるワークシートを取得したい場合に使います。

「Worksheets」プロパティの引数にはインデックス番号を指定します。インデックス番号はブックに含まれるシートの中で左から順に1,2,3,...の順となっています。

ワークシートのインデックス番号

上記の場合で言えばインデックス番号は「Sheet1」が1番、「Sheet2」が2番、「Sheet3」が3番となります。ワークシートの位置が変わったりワークシートが削除されたりするとそれに合わせてインデックス番号は左から順に振りなおされますので、インデックス番号だけでワークシートを常に特定することは出来ません。

具体的な記述方法は次のようになります。

Dim sheet1 As Worksheet

Set sheet1 = Worksheets(1)

次にインデックス番号の代わりにワークシート名を「Worksheets」プロパティの引数に指定することも出来ます。

Dim sheet1 As Worksheet

Set sheet1 = Worksheets("Sheet1")

ワークシート名を指定する場合には、ワークシートの並び順に関係無く常に特定のワークシートを対象としたWorksheetオブジェクトを取得できます。

サンプルプログラム

では簡単なサンプルで試してみましょう。

testsheet1.bas

Sub テスト()

    Dim sheet1 As Worksheet
    
    Set sheet1 = Worksheets(2)
    sheet1.Range("A1").Value = "Test"
            
    Worksheets("Sheet3").name = "シート3"

End Sub

上記マクロを実行すると次のようになります。

ワークシートの取得

Worksheetオブジェクトの「Name」プロパティを使って3番目のワークシートのシート名を変更しました。また「Sheet2」のワークシートをアクティブにして下さい。

ワークシートの取得

このように元々もアクティブになっていなかったワークシートに含まれるセルに対しても、「ワークシート.Rangeオブジェクト」の形で指定することで操作することが可能となります。

Excel VBA入門の他の記事を見てみる

( Written by Tatsuo Ikura )