我正在尝试使用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
我错过了什么吗?
注意:ws
和ps
被定义为工作表
更新
根据对此问题的评论,问题似乎是正在使用的标准。这是因为对复选框进行了测试。选中复选框后,将返回TRUE
的值。但是在使用此代码进行测试时,它无法识别工作表上的“TRUE”与V _中的“TRUE”相同#
有人有什么想法吗?
答案 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