下标超出范围/应用程序定义或对象定义的错误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)