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

时间:2016-01-26 21:14:53

标签: excel vba

前一段时间我问了一个类似的问题,并且认为我已经解决了我的问题,但由于某种原因,我试图稍后运行它,即使之前很好,也会出现同样的错误。无论如何,当我尝试运行此代码时,我会得到一个超出范围/应用程序定义的下标或对象定义的错误。我试图在一张包含“current assets:”字样的表格中找到单元格。这是我的代码。我觉得这个问题要么在我使用'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)

如果有人发现问题,我们将不胜感激。

2 个答案:

答案 0 :(得分:1)

我认为问题是你var last = isNaN(e.target.value)?'':e.target.value;并非assigning parentage。尝试更换你的行:

Cells()

使用

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 ,因为它节省了一些空间(注意With s)。另一种方法是在任何.引用之前添加Worksheets("Sheet1")(如果您使用的话,还包括Cells()Rows())。

如果您没有分配父母,那么除非您尝试引用的工作表是ActiveSheet,否则您将收到错误。

答案 1 :(得分:0)

如果您只使用Set crntassone = Cells.Find(What:="Current assets:", After:=[A1], SearchDirection:=xlPrevious, MatchCase:=False)

,我不确定您是否需要这一切