下标超出范围/应用程序定义或对象定义的错误VBA

我刚才问了一个类似的问题,并认为我已经解决了我的问题,但由于某种原因,我试图在稍后运行它,同样的错误popup,即使它早早好。 无论如何,当我尝试运行这个代码时,我得到一个超出范围/应用程序定义的下标或对象定义的错误。 我正在试图find一个表格中包含“当前资产:”字样的单元格。 这是我的代码。 我觉得这个问题要么在我正在使用的“范围”中find。

Sub Valuation() Dim LastRow As Long LastRow = Worksheets("Sheet1").Range("A1").SpecialCells(XlCellType.xlCellTypeLastCell).Row Dim LastColumn As Long LastColumn = Worksheets("Sheet1").Range("A1").SpecialCells(XlCellType.xlCellTypeLastCell).Column Dim crntassone As Range Set crntassone = Worksheets("Sheet1").Range(Cells(1, 1), Cells(LastRow, LastColumn)).Find(What:="Current assets:", After:=Worksheets("Sheet1").Range(Cells(1, 1)), LookIn:=xlValue, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False) 

如果有人看到这个问题,将不胜感激。

我相信这个问题是你没有把 Cells() 分配给Cells() 。 尝试replace你的线路:

Set crntassone = Worksheets("Sheet1").Range(Cells(1, 1), Cells(LastRow, LastColumn)).Find(What:="Current assets:", After:=Worksheets("Sheet1").Range(Cells(1, 1)), LookIn:=xlValue, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)

 With Worksheets("Sheet1") Set crntassone = .Range(.Cells(1, 1), .Cells(LastRow, LastColumn)).Find(What:="Current assets:", After:=.Range(.Cells(1, 1)), LookIn:=xlValue, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False) End With 

我用了,因为它节省了一些空间(注意.s)。 另一种方法是在任何Cells()引用之前添加Worksheets("Sheet1") Columns()如果使用这些引用,还包括Rows()Columns() )。

如果您不指派亲子关系,除非您尝试引用的工作表是ActiveSheet,否则将会出现错误。

我不确定你需要什么,如果你只是使用Set crntassone = Cells.Find(What:="Current assets:", After:=[A1], SearchDirection:=xlPrevious, MatchCase:=False)