IsEmpty() などは使わないこと。
ヘルプには以下のように書いてありますが、これを真に受けてはいけません。
---
IsEmpty 関数
変数が初期化されたかどうかを調べ、結果をブール値で返します。
解説
IsEmpty 関数は、指定した変数が初期化されていない場合、または、Empty 値の場合は、真 (True) を返します。
---
IsEmpty(varname) の実装は、(VarType(varname)=vbEmpty) のようで、実際には、objectが既定プロパティを持つとき、IsEmpty(object) はその既定プロパティがEmpty かどうかを返すようです。
これは障害だと思いますが、詮無きことなので、もし、varname を評価したければ(普通はそうですが)、
Function IsEmpty2(varname)
If IsObject(varname) Then
IsEmpty2=False
Else
IsEmpty2=IsEmpty(varname)
End If
End Function
のように代替します。
しかし、それよりも、なによりも、( TypeName(varname)="Empty" ) を使ったほうが簡単です。
なので、原則、IsEmpty() は使わないで、TypeName() を使いましょう。
もし、varname がオブジェクトでないことが明白なら、IsEmpty() を使うことに問題はありません。
IsObject()を除く他のIs???()も同様です。
« TypeName() と VarType() の違いに注意。 | トップページ | WScriptオブジェクトの簡単ラッパーオブジェクト »