2023/11/22

Variant 型変数と EMPTY

Variant 型の変数は、数値や文字列などのスカラー値だけなく、Notes Object Class や Excel の Woorksheet などのオブジェクトも格納できます。また、これらを配列として格納することも可能です。とても便利な変数で頻繁に使いますよね。

ところで、この Variant 型の変数は、宣言時の初期値は EMPTY という特殊な値となっています。今回はこの EMPTY について整理します。


初期状態と演算

まずは、変数を宣言してすぐの状態をデバッガで確認します。すると次のように値に何も表示されません。この状態が EMPTY ということになります。

この EMPTY という状態は少し特殊で、数値演算を行うと 0(ゼロ)に変換され、文字列演算の場合は null の文字列("")に変換されます。

例えば、次のようなプログラムでは、宣言したての Variant 変数を文字列演算して、メッセージボックスで表示しています。

   Dim v As Variant
   MsgBox |v = "| & v & |"|

この結果は以下の通りで、null に変換されたことがわかります。


EMPTY の判定

続いて、EMPTY の状態を判定する方法です。

LotusScript には IsEmpty という関数が用意されています。例えば次のように記述すると『EMPTY です!』とメッセージが表示されます。

   Dim v As Variant
   If IsEmpty(v) Then
      MsgBox "EMPTY です!"
   End If


Variant 変数に EMPTY をセットする方法

では、Variant 変数にいったん値をセットした後、EMPTY に戻すにはどうすればいいでしょうか? 実はこの方法がわからず、ヘルプを調べたことがこの記事を書くきっかけになりました。

調査した結果、通常の方法では EMPTY をセットする方法はないようです。ヘルプによると『Variant 型が EMPTY 値をとるのは、初期化のとき、または値が EMPTY の別の Variant 型から代入されるときだけです。』とありました。

ということは、EMPTY に戻すためには、別途 Variant 型の変数を宣言するとその値が EMPTY となり、それを初期化したい変数に代入する手順になります。なんだかめんどくさいですね。


まとめ

今回は Variant 型変数の EMPTY という値についてまとめました。

似たような状態として、オブジェクト変数の Nothing があります。Nothing の 判定は『If oSheet Is Nothing Then MsgBox "Nothing です!"』と記述できます。また、代入するときは『Set oSheet = Nothing』と記述します。

この差が LotusScript のベースとなった VBA の仕様なのかは知りませんが、統一感がないですね...

0 件のコメント:

コメントを投稿