VBA循环多个条件(AND,OR)

我试图检查多个条件,如果他们确定,就继续。 否则应该有一个消息。 macros运行,但它不捕获错误(例如-2栏中没有基金#),并没有提供错误信息,如预期的那样。 哪里不对?

Sub CheckFundsInISAccounts() 'Version 9 change. Dim c As Range Dim lstRng As Range Dim LastRow As Integer Application.ScreenUpdating = False Worksheets("DataFile").Activate Range("U2").Activate LastRow = Cells(Rows.count, "A").End(xlUp).row Set lstRng = Range("U2", Range("U65536").End(xlUp)) For Each c In lstRng If c.Value > 29999 And c.Offset(0, -2).Value = 10 Or 11 Or 12 Or 20 Or 45 Or 60 Or 70 Then c.Offset(1, 0).Select Else MsgBox ("NOT every IS account has a Fund assigned to it. Double-check it") End If Next c Columns("A:W").Select Selection.EntireColumn.AutoFit Application.ScreenUpdating = True End Sub 

c.Offset(0, -2).Value = 10 Or 11 Or 12 Or 20 Or 45 Or 60 Or 70 Then是不正确的代码。 你需要分别做每个testing:

 c.Offset(0, -2).Value = 10 Or c.Offset(0, -2).Value = 11 Or c.Offset(0, -2).Value = 12 Or c.Offset(0, -2).Value = 20 Or c.Offset(0, -2).Value = 45 Or c.Offset(0, -2).Value = 60 Or c.Offset(0, -2).Value = 70 Then 

当然,还有更方便的方法,比如将有效值放在列表中,并检查列表是否包含c.Offset(0, -2).Value

根据括号的使用,结果有所不同

 If c.Value > 29999 _ And c.Offset(0, -2).Value = 10 _ Or c.Offset(0, -2).Value = 11 _ Or c.Offset(0, -2).Value = 12 _ Or c.Offset(0, -2).Value = 20 _ Or c.Offset(0, -2).Value = 45 _ Or c.Offset(0, -2).Value = 60 _ Or c.Offset(0, -2).Value = 70 Then 

将有不同的结果比以下(这可能是你在找什么)

 If c.Value > 29999 _ And (c.Offset(0, -2).Value = 10 _ Or c.Offset(0, -2).Value = 11 _ Or c.Offset(0, -2).Value = 12 _ Or c.Offset(0, -2).Value = 20 _ Or c.Offset(0, -2).Value = 45 _ Or c.Offset(0, -2).Value = 60 _ Or c.Offset(0, -2).Value = 70) Then