機能と数式 | VBA | セミナー | オンラインソフト | お問い合わせ | その他
Top > Excel > 今さら聞けないVBA

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")は同じ意味になります。

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



このエントリーをはてなブックマークに追加