値がゼロであるか空のレコードをスキップしようとしています。現在、両方を明示的にチェックする次のコードがありますが、2番目のチェックは冗長だと感じています。しかし、IFの2番目の部分を削除できるように、私が正しいことを確認したい
IF (CellInValue(RowInCrnt, ColInCrnt) = 0 Or CellInValue(RowInCrnt, ColInCrnt) = "") Then
いいえ、""
と等しくなく0
、厳密に型指定されたシナリオで型の不一致が発生するか、 として使用された場合に等しいとはなりませんVariant
。
セルが空の場合もゼロと同じではありませんが、VB ではバックグラウンドで暗黙的な変換が行われるため、同じEmpty = 0
結果True
になります。
についても同じですが、同じ理由でEmpty = ""
与えられます。True
したがって、両方のチェックが必要です。
GSergは完全に正しいです。
2 つの異なるチェックを本当に避けたい場合は、If を次のように変更できます。
If Clng(0 & CellInValue(RowInCrnt, ColInCrnt)) = 0 then
CellInValue(RowInCrnt, ColInCrnt)
is ""、Empty、または 0の場合に true を返します。
ただし、関数が数字の代わりに文字を返す可能性がある場合、その場合、型の不一致エラーが発生します。