カーソルの位置を特定するために、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