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 に纏わる小ネタを書いてみました。
僕は、エンジニアはコーディングをガリガリやってるだけじゃダメだと思っていて、 こういう小ネタも知っておくといつかどこかで何かの役に立つんじゃないかなぁなんて思いもありこのエントリを書いてみました。
ご質問などありましたらお気軽にお問合せください。
たぶんそうですね。Valueの参照よりも代入操作の方が多いと思います。
エンジニアは、コーディングがりがりやってるだけではダメというのは同感です。
パソコンを離れて体を動かしたり人としてバランスがとれていないとですね。