SheetsとWorksheetsって何が違うの?


ワークシートを操作するマクロで、次のようなコードを見かけます。

Sub Sample1()
    Worksheets("Sheet1").Activate
End Sub

上記のコードは、Sheet1を開くマクロですが、同じ動作をするマクロで、次のようにSheetsを使っていることもあります。

Sub Sample1()
    Sheets("Sheet1").Activate
End Sub

ワークシートを操作するときのWorksheetsSheetsは、何が違うのでしょう。

シートはワークシートだけじゃない

一般に、ワークシートのことをシートと呼ぶことが多いです。しかし、Excelにはいろいろなシートが存在します。たとえばグラフシートです。

ほかにもあります。Excel 4.0のマクロを記述するためのモジュールシート

Excel 5.0/95時代のマクロで使用していたダイアログシート

そして、最も使う機会の多いワークシート

これらは、すべてシートです。

VBAで、シートはSheetオブジェクトとして操作します。そのSheetオブジェクトの集合体がSheetsコレクションです。

一方で、シートのひとつであるワークシートは、Worksheetオブジェクトとしても操作できます。このWorksheetオブジェクトの集合体がWorksheetsコレクションです。


[Sheet1]はSheetsコレクションの一員ですし、Worksheestコレクションの一員でもあります。したがって、

Worksheets("Sheet1") → Worksheetsコレクションの一員であるSheet1
Sheets("Sheet1") → Sheetsコレクションの一員であるSheet1

という意味になります。

たとえば、ある学級に"田中くん"という男子生徒がいて、彼は"図書委員"のメンバーだったとします。もちろん、男子生徒は"田中くん"一人ではなく"山田くん"もいれば"鈴木くん"もいます。また、"図書委員"には、"田中くん"だけでなく"佐々木さん"や"五所川原くん"も任命されていたとします。

先生が"田中くん"を特定する場合

男子生徒の"田中"来なさい

と言うのと

図書委員の"田中"来なさい

と叫ぶのは、どちらも同じ"田中くん"を指していることに違いありません。それと似たようなことです。

一般的に、ワークシートと、ほかのシート(グラフシートなど)で、同じ名前を使うことは希です。そもそも、グラフシートやモジュールシートが存在せず、ワークシートしかないブックの方が多いです。そんなときは、Worksheets("Sheet1")とSheets("Sheet1")は同じ意味になります。

では、両者は、どう使い分けたらいいのでしょう。それは、特に意識する必要はありません。ブック内にワークシートだけでなくグラフシートなども混在しているようなケースでは、Worksheets("Sheet1")と指定した方が確実です。また、こうした事情をすべて理解した上でなら、Worksheetsと入力するよりSheetsの方が文字数が少ないので楽です。あるいは、雑誌や書籍などでは、ページの横幅に限りがありますので、文字数の短いSheetsを使うこともあります。その程度のことです。