2014/10/02

【VB系】変数の宣言と初期化を1行で書く(VB.NET,VBA,VBScript)

VBAやVBScriptって、変数宣言と初期化がものっそい面倒なイメージがある。

C#やJavaみたいにint num = 0;みたいに書ければいいのに…って思っている方は多いのではないでしょうか?

実は、1行でも書ける!

やっとVisual Basic系(VB、VB.NET、VBA、VBScriptなど)で変数の宣言と初期化を1行で書く方法を見つけたのでまとめていく。


宣言と初期化を1行で書く


' VBA の場合
'----------------------------
Dim foo As Integer: foo = 0
Dim bar As String:  bar = "hogehoge"

Dim obj As Object: Set obj = WScript.CreateObject("WScript.Shell")


' VBScript の場合
'----------------------------
Dim foo: foo = 0
Dim bar: bar = "hogehoge"

Dim obj: Set obj = WScript.CreateObject("WScript.Shell")


VB系の言語では「:(コロン)」を付けると複数のステートメントを1行に書ける仕様があるため、こんな感じで数値型でも文字型でもオブジェクト型でも、変数の宣言と初期化が1行にできる。
※VB.NETは試してないけど、たぶんVBAと同じ書き方になると思う。


区切り記号は、その名前が示すとおり、コードのセクションを区切ります。 Visual Basic では、区切り記号はコロン (:) です。 複数のステートメントを複数行ではなく単一行に配置する場合に、区切り記号を使用します。 これにより、スペースを節約し、コードを読みやすくすることができます。 コロンで区切られた 3 つのステートメントの例を次に示します。

引用元:コード内の特殊文字 (Visual Basic)


以上

written by @bc_rikko


4 件のコメント :

  1. VB.NETはコロンでも書けますけど、 Dim foo As Integer = 0 これでいけますよ。
    ちゃんと覚えていないですけど、2008年くらいにはできたような?

    返信削除
    返信
    1. ご指摘ありがとうございます!
      執筆当時、VB.NETはほとんど触っていなかったので勘違いしていたかもしれません。。。

      削除
    2. 「Visual Basic系(VB、VB.NET、VBA、VBScriptなど)で変数の宣言と初期化を1行で書く方法」となっていますが言語によるのかもしれませんね。
      今Office365のExcel(バージョン1810)のVBAで"Dim foo As Integer = 0"を入力してみたらコンパイルエラーになりました。

      削除
    3. コメント、動作確認ありがとうございます。

      匿名さんにご指摘いただいた「Dim foo As Interger = 0」は私の環境(Excel Ver16.19 181109 macOS)でもダメでした。
      当記事で紹介している「Dim foo As Interger: foo = 0」は大丈夫でした。

      古いVB関連の仕様を知らないので「Dim foo As Integer =0」が有効なコードなのかちょっとわかんないです。

      削除