VBA 运行时错误 9
VBA runtime error 9
我目前收到一条错误消息,指出下标超出范围。在代码行
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
我假设你提到了你的错误行:
If Cells(i, A).Value = AssetNum.Value Then
好吧,我没看到任何地方声明了 A
。然后 VBA 自动声明它(建议:始终 将工具、选项、要求变量声明设置为 ON)。我也没有看到 A
被初始化,所以它的值将是 0
,这不是 Cells
的有效引用。因此,下标越界。
如果要引用"A"列,则写:
If Cells(i, 1).Value = AssetNum.Value Then
因为 "A" 是第一列。
使用如下:
If Sheets(Master).Cells(i, "A").Value = AssetNum.Value Then
还有这一行:
Compare.LocationDisply.Value = Cells(i, "B").Value
我目前收到一条错误消息,指出下标超出范围。在代码行
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
我假设你提到了你的错误行:
If Cells(i, A).Value = AssetNum.Value Then
好吧,我没看到任何地方声明了 A
。然后 VBA 自动声明它(建议:始终 将工具、选项、要求变量声明设置为 ON)。我也没有看到 A
被初始化,所以它的值将是 0
,这不是 Cells
的有效引用。因此,下标越界。
如果要引用"A"列,则写:
If Cells(i, 1).Value = AssetNum.Value Then
因为 "A" 是第一列。
使用如下:
If Sheets(Master).Cells(i, "A").Value = AssetNum.Value Then
还有这一行:
Compare.LocationDisply.Value = Cells(i, "B").Value