Excel VBAのコードを自力で記述するようになると気になることの一つに、“SheetsとWorksheetsは違うのか”、更には“SheetsとWorksheetsをどう使い分けるのか”ということがあります。今回はSheetsとWorksheetsの違いについて説明します。
SheetsとWorksheetsはどう使い分けるのか?
まずは結論である使い分けについてですが、ほとんどの人にとっては、”どっちでもいい”ということになります。ほとんどの人というのは、より正確に記すなら”Excelのワークシート上での作業を自動化する人”ということになります。
後述するようにSheetとWorksheetは異なるオブジェクト、SheetsとWorksheetsは異なるコレクションですが、Excel使用者の作業の大半はWorksheetで完結するため、その場合にはどちらを選んでもVBAコードの実行結果は変わりません。どういったケースで違いがあるのかは、下記の項目を参照ください。
オブジェクト・コレクションとは何か
オブジェクト(Object)というのはVBAの操作対象です。それは例えばExcelというアプリケーションであり、特定のブック(ファイル)であり、シートであり、その中の範囲です。オブジェクトには以下のようなものがあります。また、1つの種類のオブジェクトの集合のことをコレクション(Collection)と呼びます。Worksheetがオブジェクトで、Worksheetsがコレクションです。
オブジェクト・コレクションをオブジェクト型の変数を使うときには”Set”をつける必要があります。整数型や文字列の変数の時には不要な作業なので、オブジェクト型の変数を扱うときには注意してください。例えばwsというワークシート型の変数を用意し、そこに今実行しているファイルのアクティブシートを格納する場合には、以下のように記述します。
Dim ws As Worksheet
Set ws = ThisWorkbook.ActiveSheet
SheetsとWorksheetsの違い
Sheetsの方が包括的な概念
次に、SheetsとWorksheetsの違いについて説明します。こちらも結論から言うと、Sheetsの方がより包括的な概念です。WorksheetsというのはSheetsの中の1つの形態に過ぎません。Worksheets以外のSheetsというのイメージが難しいかもしれませんが、グラフシート、モジュールシート、ダイアログシート等の種類があります。
Graph sheet
F11を押すと出てくるのが下記のグラフシートです。使ったことのない人が多いかもしれません。
Module Sheet
モジュールシートは見た目はワークシートと変わりませんが、シートに紐づくマクロのコードを記述するためのシートです。
Dialog sheet
この機能は実はExcel97より前のバージョンで有用だった機能で、今となってはほとんど使われることはありません。そんなものがあるんだな、くらいの認識でよいかと思います。
Worksheetとは何か
ではそもそもワークシートとは何かというと、以下の表シートのことです。ほとんどの人がこのワークシート上でExcelの操作をされていて、それを自動化しようとしていると思います。その限りにおいては、SheetsでもWorksheetsでも結果が変わらないというのがお分かりいただけるかと思います。
コメント