ワークシートを操作するマクロで、次のようなコードを見かけます。
Sub Sample1() Worksheets("Sheet1").Activate End Sub
上記のコードは、Sheet1を開くマクロですが、同じ動作をするマクロで、次のようにSheetsを使っていることもあります。
Sub Sample1() Sheets("Sheet1").Activate End Sub
ワークシートを操作するときのWorksheetsとSheetsは、何が違うのでしょう。
一般に、ワークシートのことをシートと呼ぶことが多いです。しかし、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を使うこともあります。その程度のことです。