Vba VB。如果有多个或内部

Vba VB。如果有多个或内部,vba,excel,Vba,Excel,我想把这个If放在宏中,但它总是给我一个错误。我不知道“或”的用法是否正确 Dim SMAT As String SMAT = "blahblahblah" (...) If Cells(h + 2, 24) <> SMAT Or SMBE Or SMES Or SMFR Or SMGB Or SMGR Or SMRO1 Or SMRO2 Or SMRO3 Or SMDE Then C(j) = Cells(h + 2, 5) Dim SMAT作为

我想把这个If放在宏中,但它总是给我一个错误。我不知道“或”的用法是否正确

 Dim SMAT As String
 SMAT = "blahblahblah"
    (...)  
 If Cells(h + 2, 24) <> SMAT Or SMBE Or SMES Or SMFR Or SMGB Or SMGR Or SMRO1 Or SMRO2 Or SMRO3 Or SMDE Then
        C(j) = Cells(h + 2, 5)
Dim SMAT作为字符串
SMAT=“blahblahblah”
(...)  
如果电池(h+2,24)为SMAT或SMBE或SMFR或SMGB或SMGR或SMRO1或SMRO2或SMRO3或SMDE,则
C(j)=单元(h+2,5)
以下是更正

Dim SMAT As String
SMAT = "blahblahblah"
'(...)
If Cells(H + 2, 24) <> SMAT Or _
   Cells(H + 2, 24) <> SMBE Or _
   Cells(H + 2, 24) <> SMES Or _
   Cells(H + 2, 24) <> SMFR Or _
   Cells(H + 2, 24) <> SMGB Or _
   Cells(H + 2, 24) <> SMGR Or _
   Cells(H + 2, 24) <> SMRO1 Or _
   Cells(H + 2, 24) <> SMRO2 Or _
   Cells(H + 2, 24) <> SMRO3 Or _
   Cells(H + 2, 24) <> SMDE Then
    c(j) = Cells(H + 2, 5)
End If

改用
选择案例
块:

Select Case Cells(H + 2, 24).Value
    Case SMAT, SMBE, SMES, SMFR, SMGB, SMGR, SMR01, SMR02, SMR03, SMDE
    Case Else
        c(j) = Cells(H + 2, 5).Value
End Select

或者使用
Evaluate()
的另一种方法,只是为了多样化*:

varConditions = Array(SMAT, SMBE, SMES, SMFR, SMGB, SMGR, SMR01, SMR02, SMR03, SMDE)

If Evaluate("ISERROR(MATCH(" & Cells(H + 2, 24).Value & ",{" & _
    Join(varConditions, ",") & "},0))") Then
        c(j) = Cells(H + 2, 5).Value
End If

*当数组包含数字时,此求值方法将起作用-如果使用字符串,则必须将每个字符串用附加引号括起来

代码应该做什么?是否要检查
单元格(h+2,24)
是否不等于所有这些
SM*
字符串?如果是这样,您需要每次重复测试<代码>如果(单元格(h+2,24)SMAT)或(单元格(h+2,24)SMBE)或…括号有帮助。我仍然认为它们应该是、不是或,但使用“like”操作符当然是垃圾。完成!感谢Cody Gray和ElbertVIMHO,语法是正确的,但逻辑是错误的。很抱歉加上1的选择案例。选择案例块的作用正好相反哈哈谢谢你的支持help@PedroLastra对不起,漏了一行-我刚刚更改了它,以便符合您的逻辑
varConditions = Array(SMAT, SMBE, SMES, SMFR, SMGB, SMGR, SMR01, SMR02, SMR03, SMDE)

If Evaluate("ISERROR(MATCH(" & Cells(H + 2, 24).Value & ",{" & _
    Join(varConditions, ",") & "},0))") Then
        c(j) = Cells(H + 2, 5).Value
End If