我想檢查一個單元格中的第一個數字是不是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
僅適用於第一個條件(檢查8),因爲它的優先級低於運算符Or
。正如Scott Crane所建議的,一種解決方案是爲第二個條件(檢查7)添加第二個Not
。
另外,還可以包括括號圍繞整個條件,如
If Not (bCell Like "8*" _
Or bCell Like "7*") Then
有關運算precendence更多信息,請參閱「注」部分here on Microsoft Docs for VBA。
注: 由於邏輯和位運算符具有比其他的算術和關係的優先級高,任何位操作應該被包含在括號中以確保精確的執行。
太感謝了,富蘭克林!這些果實使它成爲可能! – 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(或任何代碼),而不管單元格中的內容。
'還是不一樣的B細胞「7 *」' –
謝謝,但現在它甚至不承認第一個「贊」 – Alexandra