4

値がゼロであるか空のレコードをスキップしようとしています。現在、両方を明示的にチェックする次のコードがありますが、2番目のチェックは冗長だと感じています。しかし、IFの2番目の部分を削除できるように、私が正しいことを確認したい

IF (CellInValue(RowInCrnt, ColInCrnt) = 0 Or CellInValue(RowInCrnt, ColInCrnt) = "") Then
4

2 に答える 2

7

いいえ、""と等しくなく0、厳密に型指定されたシナリオで型の不一致が発生するか、 として使用された場合に等しいとはなりませんVariant

セルが空の場合もゼロと同じではありませんが、VB ではバックグラウンドで暗黙的な変換が行われるため、同じEmpty = 0結果Trueになります。
についても同じですが、同じ理由でEmpty = ""与えられます。True

したがって、両方のチェックが必要です。

于 2012-11-01T08:47:19.807 に答える
4

GSergは完全に正しいです。

2 つの異なるチェックを本当に避けたい場合は、If を次のように変更できます。

If Clng(0 & CellInValue(RowInCrnt, ColInCrnt)) = 0 then

CellInValue(RowInCrnt, ColInCrnt)is ""、Empty、または 0の場合に true を返します。

ただし、関数が数字の代わりに文字を返す可能性がある場合、その場合、型の不一致エラーが発生します。

于 2012-11-01T08:54:26.650 に答える