2017-10-19 62 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

'還是不一樣的B細胞「7 *」' –

+0

謝謝,但現在它甚至不承認第一個「贊」 – Alexandra

回答

2

Not僅適用於第一個條件(檢查8),因爲它的優先級低於運算符Or。正如Scott Crane所建議的,一種解決方案是爲第二個條件(檢查7)添加第二個Not

另外,還可以包括括號圍繞整個條件,如

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

有關運算precendence更多信息,請參閱「注」部分here on Microsoft Docs for VBA

注: 由於邏輯和位運算符具有比其他的算術和關係的優先級高,任何位操作應該被包含在括號中以確保精確的執行。

+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,不Or。如果你使用Or,那麼它將會執行msgbox(或任何代碼),而不管單元格中的內容。