セルの最初の桁が7または8でないかどうかを確認したい場合は、メッセージが画面に表示されます。私のコードで 問題は、それが最初の行のみをチェックし、他を無視していることである:ステートメントVBAで複数のお気に入りを使用
Dim bCell As Range
Set bCell = Range("B13")
If Not bCell Like "8*" _
Or bCell Like "7*" Then
MsgBox
セルの最初の桁が7または8でないかどうかを確認したい場合は、メッセージが画面に表示されます。私のコードで 問題は、それが最初の行のみをチェックし、他を無視していることである:ステートメントVBAで複数のお気に入りを使用
Dim bCell As Range
Set bCell = Range("B13")
If Not bCell Like "8*" _
Or bCell Like "7*" Then
MsgBox
Not
は、Or
演算子よりも優先順位が低いため、最初の条件(8をチェックする)にのみ適用されます。 1つの解決策は、スコットクレーンが示唆するように、第2の条件(7をチェックする)のために第2のNot
を追加することです。
代わりに、あなたは「注意」のセクションを参照してくださいhere on Microsoft Docs for VBA、オペレータも優先詳細は
If Not (bCell Like "8*" _
Or bCell Like "7*") Then
のように、全体の状態の周りに括弧を含めることができます。
注:論理及びビット演算子が他の演算関係演算子よりも低い優先順位を有するので 、任意のビット演算は、正確な実行を確実にするために、括弧で囲まなければなりません。
ありがとう、フランクリン!パサンチはそれを可能にしました! – Alexandra
代わりNot bCell Like
を使用するのではなく、なぜLeft()
を使用していませんか?
If Left(bCell,1) <> 7 and Left(bCell,1) <> 8 Then ...
そうでない場合は、
If Not bCell Like "8*" And Not bCell Like "7*" Then
注:あなたはAnd
を使用する必要は、ないOr
。 Or
を使用すると、セルに何があっても、msgbox(または何らかのコード)を実行します。
「またはそうではありません」7 *「 ' –
ありがとうございますが、今は最初の「好き」を認識しません。 – Alexandra