【VBA】変数の型省略と文字列の連結「+」で起こる問題

他人の作成したマクロを解読する仕事をしていたとき、その作成者は文字結合に「+」を使っていました。

文字結合は、「&演算子」と「+演算子」のどちらでも使えますが、私は「&」を使ってきたので、一瞬足し算と思いました。

変数の型を省略し、そしてこの「+」を使った場合に思わぬ結果になることもあります。

目次

変数の省略と「+」で結果が変わる

変数の型は省略でき、省略した場合は、Variantです。

例えば、「5.5」を数字として扱いたいのか文字として扱いたいのかで結果が変わります。

変数の型を省略した場合

Dim kazu
kazu = 5.5
Debug.Print kazu + kazu

これを実行すると

ローカルウィンドウで確認すると、型はVariant/Doubleです。

ローカルウィンドウ

結果は、「11」です。

結果

文字として指定した場合

Dim kazu As String
kazu = 5.5
Debug.Print kazu + kazu

これを実行すると

ローカルウィンドウで確認すると、指定している型のstringです。

ローカルウィンドウ

結果は、「5.55.5」です。

結果

変数の型は指定し結合は&で

変数の型を指定するのは難しくはありません。

大雑把でも問題ありません。

整数なら「Long」、小数点なら「Double」、文字なら「String」

ほとんどはこの3つで対応できます。

目次