我正在检查在3个不同的组合框中选择的3个值是否在特定的行内。如果是,请将该行号分配给变量,如果不是,请检查下一行。该范围内的所有单元格都填充了数据,并且消息框显示了正确的值(仅用于检查目的),但If语句未移至下面代码中的selectedrow = r
行。下一个循环无法为变量分配一个值 - VBA
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&“|”' - 这将使您能够一次检查两个值,一个在另一个之上。 (与其他人一样,我怀疑有空白问题,或者是个案问题。) – YowE3K
将'Project'和'licence'声明为'String'可能是一个好主意,而不是让它们默认为声明为“变体”。 – YowE3K