[ VBA入門 ] 変数の宣言&初期化は同時にできない ( 複数宣言の注意点 )

Pocket

普段はあまり使う機会がない VBA を久しぶりに使うと、最初は必ず以下のエラーを出してしまいます。何度も何度も同じことを繰り返してしまって困ったものです。

スポンサーリンク

エラーとなったときの症状

コンパイルエラー:
修正候補: ステートメントの最後

コンパイルエラー

コンパイルエラー

エラーの原因

VBA では以下のように変数の宣言と初期化を同時に行うことはできません。宣言と初期化を分けて行う必要があります。

    ' NG
    Dim i As Integer = 100 ' 宣言と初期化を同時にできない

    ' OK
    Dim i As Integer ' 宣言
    i = 100          ' 初期化

最近この手のエラーに強い口調で腹を立ててた人を見たことありますが、管理人はさすがに腹を立てるようなことは減ってきました。カロリーの無駄遣いだと考えるようになってきてます。

変数宣言のよくある間違い

変数の宣言ついでに1つよくある間違いを載せておきます。意外とバグが発生した場合に追求するのが大変だったりもするので、覚えておくとよいでしょう。

    Dim str1, str2 As String 
    Dim strA As String, strB As String 

あなたはこの変数の宣言の違いについて自信を持って即答できますか?ミスを犯したことのある人やバグ解析を行った方であれば、覚えているとは思いますが、一度もこのような変数の宣言をしたことのない方は注意が必要です。

上記の宣言方法を行うと、str1 は Variant 型になってしまいます。それ以外はすべて String 型でとして扱われます。実際に開発環境で、以下のように Variant 型で Empty 値が格納されていることが確認できました。

開発環境で確認

開発環境で確認

何度も同じ間違いを犯すのは記憶力の欠如ですね。きっとまたやっちゃいます。

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *