【发布时间】:2017-03-17 01:41:49
【问题描述】:
我正在检查在 3 个不同组合框中选择的 3 个值是否在某一行内。如果是,则将该行号分配给一个变量,如果不是,请检查下一行。范围内的所有单元格都填充了数据,并且消息框显示了正确的值(仅用于检查目的),但 If 语句没有移动到下面代码中的 selectedrow = r 行。
Dim Project, licence, state As String
Dim selectedrow As Integer
Dim LastRow As Integer
Dim r As Integer
Project = cmb_Project.Value
licence = cmb_Licence.Value
state = cmb_State.Value
LastRow = Worksheets("Entitlements").Range("A" & Rows.Count).End(xlUp).row
For r = 3 To LastRow
MsgBox (Worksheets("Entitlements").Cells(r, 1).Value)
MsgBox (Worksheets("Entitlements").Cells(r, 7).Value)
MsgBox (Worksheets("Entitlements").Cells(r, 6).Value)
If Worksheets("Entitlements").Cells(r, 1).Value = Project And _
Worksheets("Entitlements").Cells(r, 7).Value = licence And _
Worksheets("Entitlements").Cells(r, 6).Value = state Then
selectedrow = r
End If
Next r
我猜我犯了一个愚蠢的错误,但是任何关于如何纠正错误的建议将不胜感激。
谢谢
【问题讨论】:
-
我还会检查
Project、licence和state的值,并非常小心前导/尾随空格。 -
将您的
MsgBox语句更改为类似于MsgBox "|" & Worksheets("Entitlements").Cells(r, 1).Value & "|" & vbCrLF & "|" & Project & "|"- 这将使您能够同时检查两个值,一个在另一个之上。 (与其他人一样,我怀疑存在空格问题,或者可能是大小写问题。) -
最好将
Project和licence声明为String,而不是将它们默认声明为Variant。 -
提醒一下,VBA 中的字符串比较区分大小写。对于您正在进行的搜索,
match公式将是合适的。 -
@YowE3K - 感谢您的建议,我一定会窃取该建议以供将来调试! :D 帮助确认没有空格问题。