>>85
ああなるほど、If Foo() = True Then って書いてあったら、Foo() は
Boolean、If Bar() Then って書いてあったら Bar() は数値型ってことね。
まあ、統一されてれば一理あるとは思う。俺は、If Foo() Then って書いて
あったら Foo() は、Boolean で、数値型の Bar() を If Bar() Then と書く
ことは認めない方針だけどね。何故かって言うと、数値型の Bar() を
If Bar() Then って書いた時、意味的には当然 If Bar() <> 0 Then なんだ
けど、If 0 < Bar() なんかでも If Bar() Then なんて書く人がいるから、
ちゃんと書き分けた方が良いと思ってからね。

>> Variant 型なら、Null = True の結果って何になるか知ってます ?
> Nullです。

だよね。だから、>>72 の...
> もしFoo()がTrue/False/Nullを返したらどうする?
と言うのは、ちょっとまずいと思ってる。Compare() が True/False/Null を
返す時 If Compare(a, b) = True Then と書くと Compare() が Null 返した
時 If Null = True Then → If Null Then となって、結果的には思った通り
Else 側に行くわけだけど、初心者が...

Dim R As Variant

R = Compare(a, b)
If R = Null Then
...
ElseIf R = True Then
...
Else
...
End If

とか、

Select Case Compare(a, b)
Case True:
...
Case False:
...
Case Null:
...
End Select

なんてコーディングしてバグりそう。