ThisWorkbookとは何者なのか

ThisWorkbookとは何者なのか

案外、初歩的なことがわかっていない、ということを痛感したので、後の戒めのためにも残しておくことにした。

ThisWorkbook」を使うことは非常に多い。VBAの場合、コードが書かれてあるブックが他のブックを操作する場面というのはよくある。そんなとき、コードが書かれてあるブックを容易に取得できる「ThisWorkbook」は非常に便利だ。

で、何者なの?

Parentプロパティを調べてみる

まずは、イミディエイト・ウインドウに

?ThisWorkbook.Parent

と打ち込んで、[Enter]を殴打。

f:id:akashi_keirin:20181006083304j:plain

このように、Microsoft Excelが返った。

オブジェクト ブラウザーで調べてみる

次に、オブジェクト ブラウザーで、ThisWorkbookを検索。

f:id:akashi_keirin:20181006083314j:plain

Applicationクラスのプロパティであることは一目瞭然。

結論

ThisWorkbook」というのは、Applicationオブジェクトのプロパティです。

オブジェクト・プロパティを指定する式を書くときに、Applicationオブジェクトから書くことが滅多にないから盲点になっていた、という話です。

ThisWorkbook.Worksheets("Sheet1")

は、

ApplicationオブジェクトのThisWorkbookプロパティを参照して、コードを書いているこのExcelブックをWorkbookオブジェクトとして取得。

WorkbookオブジェクトのWorksheetsプロパティを参照して、Worksheetsコレクションオブジェクトを取得。

Worksheetsコレクションのインデックスに「Sheet1」を指定して、「Sheet1」シートをWorksheetオブジェクトとして取得。

このように理解すればよいのだろうか。

注意

ここで言う「ThisWorkbook」というのは、「ThisWorkbookモジュール」のことではございません。