【コード】変数の宣言で気をつけたいこと

カーソルの位置を特定するために、2つの変数を用いました。

Dim SS, SE as Long

私は、このようにコンマで区切る記載をどこかで覚えたのですが、勝手に意味を以下のように考えていました。

「SSとSEをともにLongとして宣言する。」 (これ、誤解です)

ところが、本日エラーが出て、上記の解釈が間違っているとはじめて知りました。

実は、SSは変数の種類を指定されていないと解釈されて、その結果、バリアント型(Variant)になっていたのです!

よって、バリアント型のSSをLong型として引数として渡そうとすると、「ByRef 引数の型が一致しません。」のエラーメッセージがでます。

というわけで、

Dim SS as Long

Dim SE as Long

と書いて正常に動きました。めでたしめでたし。

【参考】以下、VBEのヘルプからのコピーです。

変数の型を指定しない場合は、その変数は既定のバリアント型 (Variant) を受け取ります。ただし、常に明確であるとは限りません。たとえば、次のコードでは変数を 2 つ宣言していますが、1 番目の MyVarバリアント型 (Variant) ですが、2 番目の AnotherVar整数型 (Integer) です。

Dim MyVar, AnotherVar As Integer
トップへ戻る