VBA公式ドキュメントの読み方 ~"Microsoft語”に負けない解読ポイント~

# はじめに
初心者がプログラミング言語に触れていく中で大きな障壁の1つが **公式ドキュメントの解読** かと思います。
VBA公式ドキュメントを読んでいると、馴染みのない用語や意味が分かりづらい文章が時折出てきます。（筆者の経験不足も十分にあります。）
筆者は勝手にこれを”Microsoft語”と呼んでいます。
そんなVBAの公式ドキュメントですが、いくつも読んでいくとだんだんすんなりと読んでいけるようになってきました。
そこで、VBA初心者がVBA公式ドキュメントを読む際のポイントをご紹介します。

※VBA公式ドキュメントについて、[”Office VBA リファレンス”](https://learn.microsoft.com/ja-jp/office/vba/api/overview/)に関してのみ言及します。

# Point 1 : VBAはオブジェクト指向言語である
VBA公式ドキュメントに挑む前に意識する点です。
前提として、VBAの大きな特徴の1つを抑えていきます。

### Excelを例とするオブジェクト階層イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2873167/bb6e0f21-ffc9-1e7f-75d9-6d88688902a7.png "オブジェクト階層図")
VBAで定義されたオブジェクトは基本的に階層構造となっています。
Application オブジェクトがWorkbookオブジェクトを持ち、WorkbookオブジェクトはWorkSheetオブジェクトを持つ、といった具合にオブジェクト間に関係性があります。
この構造、関係性によく着目しましょう。


# Point 2 : 目次構成を理解する
VBA公式ドキュメントを理解するにはどこで何がどう書かれているのかを知る必要があります。
そのためにまずは目次構成を把握します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2873167/40de69cb-24a1-9e96-902d-939ec7218028.png "目次構成")

（[”Office VBA リファレンス”](https://learn.microsoft.com/ja-jp/office/vba/api/overview/)より抜粋し、説明追記）

「Excel」に着目すると、最初の階層は ①アプリ概要、②オブジェクト説明、③その他 の3分類となっています。
②オブジェクト説明 はさらに 1) オブジェクト概要、2) メソッド説明 、 3) プロパティ説明 という構成となっていることが分かります。（オブジェクトによって イベント説明 も存在します。）
シートはどう扱えばいいの？とか、Findってどうやって使うの？といった疑問を解消する場合、 ②オブジェクト説明 からお目当てのオブジェクト（WorkSheetオブジェクトやFindオブジェクトなど）を探し出すところから始まります。
目次構成を手掛かりとして該当の説明ページを見つけ出しましょう。

# Point 3 : 説明ページの構成を理解する
お目当てのオブジェクト説明ページを発見したら説明ページを解読していくことになります。
以下、Worksheets オブジェクトを例に、1) ~ 3) を順に説明します。
※イベント説明 は割愛します。

### 1) オブジェクト概要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2873167/bf406361-c873-8b1f-99eb-0ccdce5a5782.png "オブジェクト概要")
（[”Office VBA リファレンス”](https://learn.microsoft.com/ja-jp/office/vba/api/overview/)より抜粋し、説明追記）

[1] 概要、[2] 解説等、[3] 例、とざっくり3つが記載されています。
オブジェクトによっては[1]がなかったり、[2]がないもしくは「注釈」というタイトルになったりします。
2)メソッド説明 や 3)プロパティ説明 を解読する前に目を通しましょう。

#### [注]：（）にアプリ名が書かれる。
同名のオブジェクトでもアプリで動きが変わる場合があるので忘れずにチェックしましょう。
ExcelVBAなら「（Excel）」となります。


[2] 解説等 は解読にあたり重要となる場合が多いです。
Point 0 を意識しながら頭に入れておきます。

### 2) メソッド説明
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2873167/46ae2670-e63d-8460-379b-47bb88940569.png "メソッド説明")
（[”Office VBA リファレンス”](https://learn.microsoft.com/ja-jp/office/vba/api/overview/)より抜粋し、説明追記）


例だと構成要素のパターンが多いですが、2,3の要素しかないものもありまちまちです。
記載があるメソッドはありがたく使わせていただき、記載がなければメソッドとしてはできないので潔く諦めましょう。

各構成要素としては、メソッドの構文、戻り値などが説明しており比較的わかりやすいかと思います。
しかしながらいまいちしっくりこない言葉があります。
この"式"([?])という言葉は何なのでしょう。
わかっているような、わかっていないような…（Microsoft語）

#### VBA・VBE用語集を確認する
ありがたいことに、Microsoft様は言葉の定義をまとめてくださっています。
公式ドキュメント記載のVBA・VBEの用語集なら見ない手はありません。
”Microsoft語”と思しき言葉は目次下部の「用語集」で調べてみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2873167/85aa2122-aac7-b55d-adf8-2f737b3553a5.png "VBE用語集")
（[”Office VBA リファレンス”](https://learn.microsoft.com/ja-jp/office/vba/api/overview/)より抜粋し、説明追記）


### 3) プロパティ説明
各オブジェクトはプロパティを持っています。
どんなプロパティを持つのか、そのプロパティは何を示すか、何を返すかを説明しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2873167/91d948e7-4832-5e44-05f7-eaa16b9ef7b9.png "プロパティ説明")
（[”Office VBA リファレンス”](https://learn.microsoft.com/ja-jp/office/vba/api/overview/)より抜粋し、説明追記）


ここでの注意点は、該当プロパティが何を返し、それは読み取り専用なのか、
あるいは代入可能な項目なのかだと思います。
読み取り専用の場合は、「読み取り専用」、「取得のみ可能」といった文言が記載されます。
代入可能な項目かどうかは読み取り専用の記載がない場合、もしくは「設定が可能」等の文言が記載されます。


# まとめ
VBA初心者ながらこれまでの経験をもとに、VBA公式ドキュメントを読む際のポイントをまとめてみました。
よりよい読解ポイントや筋の悪い考え方（あるいは間違った考え方）などあるかもしれません。
もしあればご指摘ください。