在Excel VBA中查找最后一行

时间:2016-09-28 03:09:54

标签: excel vba row

我得到运行时错误1004:应用程序定义或对象定义错误

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

与?

相关的错误是什么?

3 个答案:

答案 0 :(得分:1)

您有x1Up而不是xlUp。比较它们左右是1l左边是代码中的数字1,右边是字母l。

答案 1 :(得分:0)

这可能是因为您在工作表级别录制了宏。您必须确保它在项目/整个模块级别上。

右键单击项目窗口中的modules节点,然后将宏粘贴到新模块中。还要确保工作表不处于保护模式,否则也会发生错误。

答案 2 :(得分: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