シートに関する考察

○Worksheetオブジェクト
ワークシートを表します。
(注釈)
Worksheet オブジェクトは Worksheets コレクションのメンバーです。Worksheets コレクションには、ブックにあるすべての Worksheet オブジェクトが含まれています。
Worksheet オブジェクトは Sheets コレクションのメンバーでもあります。Sheets コレクションには、ブックにあるすべてのシート (グラフ シート、ワークシートの両方) が含まれています。

ワークシート(シート)に関するプロパティやらメソッド(操作)となるオブジェクトのようだ。
なのでブックと同様にイベントもこれに属する。

○Worksheetsオブジェクト
指定されたブックまたは作業中のブックにあるすべての Worksheet オブジェクトのコレクションです。各 Worksheet オブジェクトはワークシートを表します。
(注釈)
Worksheet オブジェクトは Sheets コレクションのメンバーでもあります。Sheets コレクションには、ブックにあるすべてのシート (グラフ シート、ワークシートの両方) が含まれています。

WorksheetsとWorksheetは紛らわしいし判りづらいが、Microsoft自身のヘルプでも間違いがあるくらい混乱するようなものである。
例えば、Worksheet内の各メソッドの説明を読む限りでは、例えば
Worksheets("Sheet1")はWorksheetオブジェクトであるという説明になっている。(つまりWorksheetsオブジェクトではない)
しかしWorksheets内の各メソッドの説明はWorksheets("Sheet1")はWorksheetsオブジェクトであるという説明になっている。
一体どちらなのだろうか。なんにせよ、どちらかが間違いである。

Worksheets.Addの項目やらとの整合性やら他のWebページでの説明を読む感じでは
Worksheets.Add 等と書いた場合にはWorksheetsオブジェクト.Addという形式で
Worksheets("Sheet1") 等と書いた時にはWorksheetオブジェクトであるというのが正しいのだろう。

別の言い方をすれば、引数を持たなければWorksheetsオブジェクト(コレクション)であり、それにワークシートを特定するような名称(番号)を付与すれば特定のワークシートとなり、すなわちWorksheetオブジェクトである、と考えるのが正当だろう。

そう考えるとWorksheetsメソッドにCopyやらMoveやらDeleteがあるのがおかしいということになるのだが。

○Chartオブジェクト
シートの一種だがグラフだけからなるシート。
Excelを使ってグラフを作る時、セルのあるシートに貼り付けるか、専用のシートを作ることができる選択があるが、その後者で作るシートのこと。
そういう意味ではWorksheetと同レベルのオブジェクトである。

○Sheetsオブジェクト
指定されたブックまたは作業中のブックにあるすべてのシートのコレクションです。
(注釈)
Sheets コレクションには、Chart オブジェクトまたは Worksheet オブジェクトを含めることができます。
任意の種類のシートにアクセスする場合には、Sheets コレクションを使用すると便利です。特定の種類のシートだけにアクセスする場合は、その種類のシートのオブジェクトを参照してください。

どうにも判りづらいが、要するにWorkbooks+Chartsというか、WorkbookもChartもひとくくりでシートという概念でまとめているオブジェクトのようだ。
別の言い方をすれば、WorkbookだろうがChartだろうが気にする必要の無い表現のようだ。

要するにSheets("Sheet1")だろうがSheets("Graph1")のようにどちらでもSheetsで指定できるということ。
Worksheets("Graph1")はエラーだし、Charts("Sheet1")もエラーである。

ブックでやったものと同様にシート名の全表示をしてみよう。
Dim wksht As Worksheet
For Each wksht In Worksheets
Debug.Print wksht.Name
Next
comments (0)

コメント

Comment Form