我正在检查在 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 和 License 不是字符串变量,而是变体。当你Dim
一行中有多个变量,每个变量名必须有自己的类型。如果没有给出类型,则默认为 Variant。
所以,试试
Dim Project as String, license as String, state as String
或者,使用三个
Dim
声明而不是一个。
关于excel - for next 循环无法为变量分配值 - VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42847786/