Vba VB。如果有多个或内部
我想把这个If放在宏中,但它总是给我一个错误。我不知道“或”的用法是否正确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作为
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