2016-01-26 3 views
0

Некоторое время назад я задал аналогичный вопрос и подумал, что я исправил свою проблему, но по какой-то причине я попытался запустить его позже, и эта же ошибка появилась, хотя это было хорошо раньше. Во всяком случае, я либо получаю индексирование вне диапазона/приложения, определяемое, либо объектно определенное сообщение, когда я пытаюсь запустить этот код. Я пытаюсь найти ячейку на листе, в которой есть слова «текущие активы». Вот мой код. Я чувствую, что проблема заключается либо в «диапазоне», что я использую «найти».Подзаголовок вне допустимого диапазона или определенного приложения или ошибки объекта VBA

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

Я считаю, что проблема заключается в том, что вы не 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, поскольку он экономит пространство (обратите внимание на . с). Альтернативой является просто добавить Worksheets("Sheet1") перед любым Cells() ссылкой (также включает Rows(), Columns() если вы использовали).

Если вы не назначаете родительский элемент, вы получите сообщение об ошибке, если лист, к которому вы пытаетесь обратиться, является ActiveSheet.

0

Я не уверен, что вам нужно все, что, если вы просто использовать Set crntassone = Cells.Find(What:="Current assets:", After:=[A1], SearchDirection:=xlPrevious, MatchCase:=False)

Смежные вопросы