2017-10-19 11 views
1

セルの最初の桁が7または8でないかどうかを確認したい場合は、メッセージが画面に表示されます。私のコードで 問題は、それが最初の行のみをチェックし、他を無視していることである:ステートメントVBAで複数のお気に入りを使用

Dim bCell As Range 
Set bCell = Range("B13") 
If Not bCell Like "8*" _ 
Or bCell Like "7*" Then 

MsgBox 
+0

「またはそうではありません」7 *「 ' –

+0

ありがとうございますが、今は最初の「好き」を認識しません。 – Alexandra

答えて

2

Notは、Or演算子よりも優先順位が低いため、最初の条件(8をチェックする)にのみ適用されます。 1つの解決策は、スコットクレーンが示唆するように、第2の条件(7をチェックする)のために第2のNotを追加することです。

代わりに、あなたは「注意」のセクションを参照してくださいhere on Microsoft Docs for VBA、オペレータも優先詳細は

If Not (bCell Like "8*" _ 
Or bCell Like "7*") Then 

のように、全体の状態の周りに括弧を含めることができます。

注:論理及びビット演算子が他の演算関係演算子よりも低い優先順位を有するので 、任意のビット演算は、正確な実行を確実にするために、括弧で囲まなければなりません。

+0

ありがとう、フランクリン!パサンチはそれを可能にしました! – Alexandra

2

代わり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を使用する必要は、ないOrOrを使用すると、セルに何があっても、msgbox(または何らかのコード)を実行します。

関連する問題