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)の名前を出力するコードです。
1 2 3 4 5 6 7 8 9 |
Sub WorksheetsTest2() Dim v, vv Set v = Sheets(1) Set vv = Worksheets(1) Debug.Print v.Name Debug.Print vv.Name End Sub |
実行すると以下が出力され、Sheets(1)はグラフシートを参照していますが、Worksheets(1)はグラフシートを参照していないことが分かります。
Graph1
Sheet1
インデックス番号の注意点
ワークシートの追加や削除を行うと、ワークシートのインデックス番号はすべて振り直されることになります。
例えば以下のように4シートあるとします。
このとき、シートの一番左のSheet1を削除すると、Sheet2、Sheet3、Sheet4が残りますが、それぞれのインデックス番号はSheet2が1、Sheet3が2、Sheet4が3になります。
インデックス番号での処理が複雑になりそうな場合は、シート名での処理を行うことも検討した方がよい場合があります。
サンプルコード
一番左のシートを参照する方法のそれぞれの書き方のサンプルです。
4行目以降では変数shtにSheet1のワークシート情報が格納されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Sub WorksheetsTest() Dim sht As Worksheet '// 作業中のブックの一番左のシートを参照 Set sht = Worksheets(1) '// 作業中のブックのSheet1シートを参照 Set sht = Worksheets("Sheet1") '// 作業中のブックの一番左のシートを参照 Set sht = Application.Worksheets(1) '// 作業中のブックのSheet1シートを参照 Set sht = Application.Worksheets("Sheet1") '// アクティブブックの一番左のシートを参照 Set sht = ActiveWorkbook.Worksheets(1) '// アクティブブックのSheet1シートを参照 Set sht = ActiveWorkbook.Worksheets("Sheet1") End Sub |