VBAでワークシートを参照する

Worksheetsプロパティ

ワークシートを参照するにはWorksheetsプロパティを利用します。

シートの選択、追加、削除、移動、コピーなど、シート操作の基本となるプロパティです。

構文

Application.Worksheets(Index)
Application.Worksheets(“SheetName”)
Workbook.Worksheets(Index)
Workbook.Worksheets(“SheetName”)

Application Worksheetsプロパティの親オブジェクトにはApplicationオブジェクトまたはWorkbookオブジェクトを指定します。Applicationを指定した場合または省略した場合は作業中のブックが対象になります。
Index シートのインデックス番号を指定します。インデックス番号はワークシートの左から順に、1、2、3・・・の順になります。
SheetName シート名文字列を指定します。

WorksheetsプロパティとSheetsプロパティの違い

Worksheetsプロパティと同じようなプロパティにSheetsプロパティがあります。

WorksheetsプロパティとSheetsプロパティの違いは、Worksheetsプロパティはワークシートのみを対象としていますがSheetsプロパティはSheetsコレクションはワークシートだけでなくグラフシートやExcel 4.0 マクロシートやMS Excel 5.0 ダイアログシートも対象になります。

グラフシートが一番左にあり、それ以降はワークシートのブックがあるとします。

この場合、Sheets(1)はそのグラフシートの「Graph1」を指しますが、Worksheets(1)はグラフシートの右のワークシート「Sheet1」を指します。

以下はSheets(1)とWorksheets(1)の名前を出力するコードです。

実行すると以下が出力され、Sheets(1)はグラフシートを参照していますが、Worksheets(1)はグラフシートを参照していないことが分かります。

Graph1
Sheet1

インデックス番号の注意点

ワークシートの追加や削除を行うと、ワークシートのインデックス番号はすべて振り直されることになります。

例えば以下のように4シートあるとします。

このとき、シートの一番左のSheet1を削除すると、Sheet2、Sheet3、Sheet4が残りますが、それぞれのインデックス番号はSheet2が1、Sheet3が2、Sheet4が3になります。

インデックス番号での処理が複雑になりそうな場合は、シート名での処理を行うことも検討した方がよい場合があります。

サンプルコード

一番左のシートを参照する方法のそれぞれの書き方のサンプルです。

4行目以降では変数shtにSheet1のワークシート情報が格納されます。

関連記事

サブコンテンツ

このページの先頭へ