【发布时间】:2014-01-11 22:33:32
【问题描述】:
我正在尝试使用 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 被定义为工作表
更新
根据这个问题的 cmets,问题似乎是所使用的标准。这是因为对复选框进行了测试。选中的复选框返回 TRUE 的值。但是在使用此代码进行测试时,它无法识别工作表上的“TRUE”与 V_# 中的“TRUE”相同
有人有什么想法吗?
【问题讨论】:
-
(不知何故,您的条件是错误的——如果“表达式中的运算符数”有上限,则不是五个。)
-
嗨@minitech,感谢您的回复,但我的条件不能不正确,因为系统适用于 3 以下的任何内容。即使我将适用于 3 的所有标准设置为与 5 相同(如搜索设置为“1”的所有五个条件)它仍然无法正常工作
-
“只是停止”是指“Then.. End If block 中的语句不执行”吗?如果你这样做了,那么 minitech 就出现了,你就有一个逻辑问题。理论上,条件运算符的数量没有限制,就像他说的那样,即使是 5 个也不会。我建议您检查您的 V_1...5 值,尤其是值 V_4 和 V_5。还要检查 CR1..5 值。
-
如果您使用 3 次测试来测试条件,但使用条件 3,4 和 5 而不是 1,2 和 3 会发生什么?
-
"...但我的条件不可能不正确..." -- 我不相信你。
标签: vba loops if-statement