IF中“和”语句的最大数量

时间:2014-01-11 22:33:32

标签: vba loops if-statement

我正在尝试使用5个条件测试“IF”语句,如果我只使用3个条件进行测试,代码工作正常,但只要我添加任何额外的它就会停止工作。没有错误,它只是停止。

If Me.Count_Criteria_5.Value <> "Any" Then

    For i = RowNum To RowNumEnd
        If ws.Cells(i, CR1).Value = V_1 And ws.Cells(i, CR2).Value = V_2 And _
        ws.Cells(i, CR3).Value = V_3 And ws.Cells(i, CR4).Value = V_4 And _
        ws.Cells(i, CR5).Value = V_5 Then
        ws.Range("A" & i & ":AM" & i).Copy

        ps.Activate
        'find first empty row in database
        emR = ps.Cells.Find(What:="*", SearchOrder:=xlRows, _
        SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1
        ps.Range("A" & emR & ":AM" & emR).PasteSpecial

    End If
    Next i
Exit Sub

End If ' End 5 Criteria Loop

我错过了什么吗?

注意:wsps被定义为工作表

更新

根据对此问题的评论,问题似乎是正在使用的标准。这是因为对复选框进行了测试。选中复选框后,将返回TRUE的值。但是在使用此代码进行测试时,它无法识别工作表上的“TRUE”与V _中的“TRUE”相同#

有人有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在评估之前使用此权利。

Msgbox "CR1 = " & ws.Cells(i, CR1) & "  V_1 = " & V_1 & vbCrLf & _
          "CR2 = " & ws.Cells(i, CR2) & "  V_2 = " & V_2 & vbCrLf & _
          "CR3 = " & ws.Cells(i, CR3) & "  V_3 = " & V_3 & vbCrLf & _
          "CR4 = " & ws.Cells(i, CR4) & "  V_4 = " & V_4 & vbCrLf & _
          "CR5 = " & ws.Cells(i, CR5) & "  V_5 = " & V_5 "

大大简化调试。

编辑:试试吧!

If ws.Cells(i, CR1).Value = V_1 And ws.Cells(i, CR2).Value = V_2 And _
        ws.Cells(i, CR3).Value = V_3 And _
        (ws.Cells(i, CR4).Value = V_4 or ws.Cells(i, CR4).Value = "TRUE") And _
        (ws.Cells(i, CR5).Value = V_5 or ws.Cells(i, CR5).Value = "TRUE") Then