在声明VBA中使用多个喜欢

我想检查一个单元格中的第一个数字是不是7或8,然后在屏幕上popup消息。 我的代码的问题是,它只检查第一行,忽略其他:

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

不仅适用于第一个条件(检查8),因为它比Or运算符的优先级低。 正如斯科特·克兰(Scott Crane)所build议的,一种解决scheme是在第二种情况下添加第二种情况(检查7)。

或者,你可以在整个条件中包括括号,比如

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

有关运算符优先级的更多信息,请参阅Microsoft Docs for VBA的“注释”部分。

注意:由于逻辑运算符和按位运算符的优先级比其他算术运算符和关系运算符的优先级低,因此任何按位运算都应该括在圆括号中,以确保执行的准确性。

而不是使用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(或任何代码),而不pipe在单元格中是什么。