オブジェクトがあり、その中にいくつかのプロパティがfalseに設定されているかどうかを確認します。
If (not objresult.EOF) Then
'Some code
End if
しかし、どういうわけか、時々objresult.EOF
はEmpty
ですが、どうすれば確認できますか?
IsEmpty
関数はExcelセル専用ですobjresult.EOF Is Nothing
-Empty
を返しますobjresult.EOF <> null
-Empty
も返します!テスト方法は、プロパティのデータタイプによって異なります。
|タイプ|テスト| Test2 |数値(ロング、整数、ダブルなど)| If obj.Property = 0 Then | |ブーレン(真/偽)| If obj.Property Then | If obj.Property = False Then |オブジェクト| obj.Propertyが何もない場合| |ストリング| If obj.Property = "" Then | If LenB(obj.Property)= 0 Then |バリアント| If obj.Property = Empty Then |
F2を押してオブジェクトブラウザを起動し、オブジェクトを検索することで、DataTypeを確認できます。別の方法は、TypeName関数を使用することです:MsgBox TypeName(obj.Property)
Variant
がNullかどうかを確認するには、次のようにする必要があります。
Isnull(myvar) = True
または
Not Isnull(myvar)
数値については、数値セルがempty
の場合、VBAがデフォルト値0を割り当てるため、VBAコードが入力されたゼロと空白の数値の違いを見分けるのが難しいため、注意が必要です。細胞。
セルに実際の0が入力されているかどうかを確認するために、次のチェックが機能しました。
If CStr(rng.value) = "0" then
'your code here'
End If
Access VBAで正当に0を割り当てることができる整数で同様の問題が発生しました。上記の解決策はどれも私にとってはうまくいきませんでした。
最初はブール変数とIFステートメントを使用しました:
Dim i as integer, bol as boolean
If bol = false then
i = ValueIWantToAssign
bol = True
End If
私の場合、整数変数の割り当てはforループと別のIFステートメント内にあったので、より簡潔なため、代わりに「Exit For」を使用することになりました。
そうだ:
Dim i as integer
ForLoopStart
If ConditionIsMet Then
i = ValueIWantToAssign
Exit For
End If
ForLoopEnd