初期値についての備忘録
先日、危うく失敗しかけたので、備忘録としてまとめておく。
Date型の変数:myDateを宣言し、直ぐにその値をA1に書き出してみる。
Sub てすと() Dim myDate As Date Range("A1") = myDate End Sub
すると、次の結果が得られる。
宣言した時点では空っぽなはずだが、しかし、それなりに何か入っているわけで(初期値)。Date型の場合は「0」が入っているようだ。
これをyyyy/mm/dd_hh:mm:ss形式で表示すると、このようになる。
ではマクロで、Date型の変数に何か格納されたかどうかを調べるには、どうすれば良いか。まず初期値が0なので、値が0かどうかを調べてみる。
一応、空っぽと判定された。
では、0を入れたうえで判定するとどうなるか。
0を格納したうえで0かどうか訊いているのだから、0と答えが返るのは当然か。
ただこの場合、最初から空だったのか、空と同じ値をセットしたかの見分けが
つかないかも。
次に、これではどうか。
この場合も、空の判定となった。
emptyと0は、同じ扱いをして良いということか。
最後に、IsEmpty関数で評価すると、このようになった。どうして?
調べてみると、IsEmpty関数は、Variant型変数に対してのみ有効なようだ。
www.officetanaka.net
実は先日、日付がセットされたか否かを判定するためにIsEmpty関数を用いて、
危うく失敗するところだったわけで。
中途半端な知識、やばし。
参考まで。