2016-09-28 1 views
-2

Я получаю время выполнения ошибки 1004: приложения или объекта определяется ошибкаПоиск последней строки в Excel VBA

Set wsht = ThisWorkbook.Worksheets("Input Checklist") 
finalrow = wsht.Cells(wsht.Rows.Count, 1).End(x1Up).Row 

Что такое ошибка, связанная с?

ответ

0

Возможно, это потому, что вы записали макрос на уровне листа. Вы должны убедиться, что он находится на уровне проекта/всего модуля.

Щелкните правой кнопкой мыши узел модулей в окне проекта и вставьте свой макрос в новый модуль. Также убедитесь, что рабочий лист не находится в защищенном режиме, иначе ошибка также возникнет.

+0

Я не ставил, как макрос. Я положил это внутри объектов внутри листа объектов – Prabhu

1

У вас есть x1Up вместо xlUp. сравнить их друг с другом 1l слева - это номер 1 в вашем коде, а справа - буква l.

+0

действительно вы правы. – Prabhu

0

Возможно, вы захотите рассмотреть приведенную ниже функцию. Используемый выше метод не будет работать, если последняя строка набора данных скрыта или (возможно) применяется фильтр). В приведенной ниже функции представлен более надежный способ достижения такого же результата.

Надеется, что это помогает

Function LastRowColumn(sht As Worksheet, RowColumn As String) As Long 
'PURPOSE: Function To Return the Last Row Or Column Number In the Active Spreadsheet 
'INPUT: "R" or "C" to determine which direction to search 

Dim rc As Long 

Select Case LCase(Left(RowColumn, 1)) 'If they put in 'row' or column instead of 'r' or 'c'. 
    Case "c" 
    LastRowColumn = sht.Cells.Find("*", LookIn:=xlFormulas, SearchOrder:=xlByColumns, _ 
    SearchDirection:=xlPrevious).Column 
    Case "r" 
    LastRowColumn = sht.Cells.Find("*", LookIn:=xlFormulas, SearchOrder:=xlByRows, _ 
    SearchDirection:=xlPrevious).Row 
    Case Else 
    LastRowColumn = 1 
End Select 

End Function