TypeName() と VarType() の違いに注意。
TypeName(varname) は文字列を返し、VarType(varname) は数値を返すだけの違い?と思っていたら大間違い。
varname の評価の仕方が異なる、全くの別物です。
TypeName(varname) は varname を評価し、VarType(varname) は、もし varname がオブジェクトで既定のプロパティがあれば、それを評価します。
VarType() のヘルプを見ると、確かに、そういう記述があります。
objectが既定プロパティを持つとき、VarType(object) はその既定プロパティの型を返します。
これは欠陥仕様だと思いますが、詮無きことなので、もし、varname を評価したければ(普通はそうですが)、
Function VarType2(varname)
If IsObject(varname) Then
VarType2=vbObject
If IsArray(varname) Then VarType2=VarType2 Or vbArray
Else
VarType2=VarType(varname)
End If
End Function
のように代替します。
しかし、それよりも、なによりも、TypeName() を使ったほうが簡単です。
なので、原則、VarType() は使わないで、TypeName() を使いましょう。
もし、varname がオブジェクトでないことが明白なら、VarType() を使うことに問題はありません。
« ファイル名に=;,や全角空白を含むファイルをバッチファイルにドロップすると、ファイル名が分割される。(その3) | トップページ | IsEmpty() などは使わないこと。 »