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
VB.NETはコロンでも書けますけど、 Dim foo As Integer = 0 これでいけますよ。
返信削除ちゃんと覚えていないですけど、2008年くらいにはできたような?
ご指摘ありがとうございます!
削除執筆当時、VB.NETはほとんど触っていなかったので勘違いしていたかもしれません。。。
「Visual Basic系(VB、VB.NET、VBA、VBScriptなど)で変数の宣言と初期化を1行で書く方法」となっていますが言語によるのかもしれませんね。
削除今Office365のExcel(バージョン1810)のVBAで"Dim foo As Integer = 0"を入力してみたらコンパイルエラーになりました。
コメント、動作確認ありがとうございます。
削除匿名さんにご指摘いただいた「Dim foo As Interger = 0」は私の環境(Excel Ver16.19 181109 macOS)でもダメでした。
当記事で紹介している「Dim foo As Interger: foo = 0」は大丈夫でした。
古いVB関連の仕様を知らないので「Dim foo As Integer =0」が有効なコードなのかちょっとわかんないです。