前一段时间我问了一个类似的问题,并且认为我已经解决了我的问题,但由于某种原因,我试图稍后运行它,即使之前很好,也会出现同样的错误。无论如何,当我尝试运行此代码时,我会得到一个超出范围/应用程序定义的下标或对象定义的错误。我试图在一张包含“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)
如果有人发现问题,我们将不胜感激。
答案 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)