我目前收到的错误是下标超出范围。在代码行上
If Sheets(Master).Cells(i, A).Value = AssetNum.Value Then
我尝试使用for循环来增加i,因此行范围从12开始并且每次都加1。然后在for循环中我想使用If语句来检查并查看单元格(i,A)是否等于AssetNum中的值。如果循环达到EmptyRow的值,它将结束循环。我不完全确定如何正确使用for循环IF-THen语句。
Public i As Integer
Private Sub AssetNum_Change()
End Sub
Private Sub Enter_Click()
Dim EmptyRow As Long
'Audit will only search Master Sheet
Worksheets("Master").Activate
'Find empty row value so we can use that for limit of search
With Sheets("Master")
EmptyRow = .Range("A" & Rows.Count).End(xlUp).Row + 1
End With
'i needs to be set to minimum limit
'Begin loop of search
For i = 12 To EmptyRow + 1
If Cells(i, 1).Value = AssetNum.Value Then
'Go to compare userform to display
Compare.AssetDisplay.Value = AssetNum.Value
Compare.LocationDisply.Value = Cells(i, 2).Value
Compare.Show
End If
Next i
'If i gets to emptyrow num then go to non found asset userform
Unload Me
NonFoundAsset.Show
答案 0 :(得分:1)
我假设您将错误引用到该行:
If Cells(i, A).Value = AssetNum.Value Then
好吧,我看不到声明A
了。然后VBA自动声明它(建议:总是将工具,选项,需要变量声明变为 ON )。我也没有看到A
被初始化,因此其值为0
,而且不是Cells
的有效参考。因此,下标超出界限。
如果要引用“A”列,请写:
If Cells(i, 1).Value = AssetNum.Value Then
因为“A”是第一列。
答案 1 :(得分:0)
使用如下:
If Sheets(Master).Cells(i, "A").Value = AssetNum.Value Then
还有这一行:
Compare.LocationDisply.Value = Cells(i, "B").Value