2016-10-31

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

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

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

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

規定のメンバー

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

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

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

SubFunction などのプロシージャにはスコープ(適用範囲)を指定します。 スコープには 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 に纏わる小ネタを書いてみました。
僕は、エンジニアはコーディングをガリガリやってるだけじゃダメだと思っていて、 こういう小ネタも知っておくといつかどこかで何かの役に立つんじゃないかなぁなんて思いもありこのエントリを書いてみました。

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

関連記事

コメント1件

  • 墨田区 より:

    たぶんそうですね。Valueの参照よりも代入操作の方が多いと思います。
    エンジニアは、コーディングがりがりやってるだけではダメというのは同感です。
    パソコンを離れて体を動かしたり人としてバランスがとれていないとですね。

  • コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です