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