VBAで一番省略されているキーワード

VBA にはプロパティやステートメントなど様々なキーワードがあります。そして中には記述を省略できるものも少なくありません。

では一番省略されているキーワードっていったいなんなのでしょうか?




よく省略されるキーワード

VBA には省略できるキーワードがたくさんあります。よく省略されるキーワードのいくつかをご紹介しますね:)

規定のメンバー

オブジェクトの規定のメンバーはよく省略されます。プロパティ名などを記述しなかった際に VBA が自動で判別してデフォルトのプロパティなどを返します。よく使われる Rangeオブジェクトではメソッドやプロパティを何も記述しないと「Valueプロパティ」が適用されます。これが規定のメンバーです。

厳密には Rangeオブジェクト の既定のメンバーは「Valueプロパティ」ではありません。Rangeオブジェクトをオブジェクトブラウザで参照してみるとわかりますが、既定のメンバーは「_Defaultプロパティ」です。このプロパティはデフォルトでは非表示になっているため、オブジェクトブラウザのコンテキストメニューから[非表示のメンバーを表示]を選択すると表示されます。

プロシージャのPublicスコープ

「Sub」や「Function」などのプロシージャにはスコープ(適用範囲)を指定します。スコープには「Public」「Private」「Friend」がありますが、記述を省略した場合は「Public」が適用されます。これもよく省略されるキーワードです。

引数の参照渡し

プロシージャに引数を渡す時は「ByRef(参照渡し)」「ByVal(値渡し)」が指定可能です。参照渡し、値渡しのそれぞれの説明は割愛しますが、これらも省略することが可能で、省略した場合は「ByRef(参照渡し)」が適用されます。

一番省略されているキーワード

先に断っておきますが、「一番省略されている」というのは別に統計を取って厳密に調べたわけではありません。あくまでぼくが独自の理論で導き出した結果に基づく「表現」ですのであしからず。

さて、先述した「よく省略されるキーワード」よりも省略されているキーワードですが、それは「Letステートメント」です。
「Let」と聞くと「Property Let ~」がまず思いつくかもしれませんが、ここで言う「Letステートメント」はPropertyプロシージャのそれとは異なります。そもそもPropertyプロシージャの「Let」は省略できませんしね。
じゃあいったいあんたが言う省略可能な「Letステートメント」ってなんなのさって感じかと思いますが、変数に値を代入する際の「Letステートメント」が省略可能なキーワードになります。

まだピンと来ない方もいらっしゃるかと思いますので、簡単に説明します。

通常、変数への値の代入は↓こんな感じで記述しますよね。

   Dim stringValue As String
   Dim intValue As Integer
   '文字列変数への代入
   stringValue = "ABCDE"
   '数値変数への代入
   intValue = 12345

でもこの値の代入、省略せずに記述すると↓こんな風になるんです。

   Dim stringValue As String
   Dim intValue As Integer
   '文字列変数への代入
   Let stringValue = "ABCDE"
   '数値変数への代入
   Let intValue = 12345

変わったところはそれぞれの代入している箇所に「Let」が記述してあるところです。
普段何気なく記述している「変数への値の代入」は実は省略された形式だったんですね。
VBA のヘルプにも『キーワード Let を明示的に使用するかどうかは表記上の問題であり、通常は省略します。』とありますし、VBA の参考書などを見ても「変数への値の代入」で「Let」を記載しているものは、少なくともぼくは見たことがありません。
先述の「よく省略されるキーワード」は確かに記述を省略することが多いと思います。また、他にも普段省略しているキーワードはたくさんあるでしょう。ただ、この「変数への値の代入のLetステートメント」よりも多く出現する省略可能なキーワードってあるでしょうか。おそらく無いと思います。
ってことで「Letステートメント」を一番省略されているキーワード(ぼく調べ)に認定してみました。

まとめ

今回は技術的な内容ではなく、VBA に纏わる小ネタを書いてみました。
ぼくは、エンジニアはコーディングをガリガリやってるだけじゃダメだと思っていて、こういう小ネタも知っておくといつかどこかで何かの役に立つんじゃないかなぁなんて思いもありこのエントリを書いてみました。

ご質問などありましたらお気軽にお問合せくださいまし:D

HAYs