查找包含数据的最后一行不起作用 - table 格式可能存在问题

Finding last row containing data not working - possible problem with table formatting

我有一个名为 MachineData 的 sheet,我有以下代码

Worksheets("MachineData").Activate

'Last row with data on column AD (30)
lrow3 = Cells(Rows.Count, 30).End(xlUp).Row

问题是 lrow3 returns 2166 应该 return 1 因为那是包含数据的该列的最后一行。

此列已添加到 table 旁边,其中包含我从数据库中提取的数据。我相信,因为数据是从数据库中提取的,所以这个 table 有一些奇怪的格式,使这个功能不起作用。

我的问题是,如何更改 table 的格式,以免发生这种情况?或者有没有办法更改我的代码,这样 table?

中就不会发生这种情况

这是我的专栏的图片,“文件名”下面的任何内容都是空的。我只得到那些绿色和白色的单元格颜色,因为这是较大 table.

的一部分

使用查找方法的最后 Non-Blank 行

  • 假设工作表既没有被过滤也没有隐藏行。
  • 空白表示empty, ="", ', ...
  • 空表示 empty.
  • 请注意,这两个过程之间的唯一区别是第三个 Find 方法参数的参数,称为 LookIn,设置为 xlValues(空白)或 xlFormulas(空)。

Non-Blank

Sub LastNonBlankRow() ' is different than last non-empty row
    
    Const FirstCellAddress As String = "AD2"
    
    Dim wb As Workbook: Set wb = ThisWorkbook 'workbook containing this code
    Dim ws As Worksheet: Set ws = wb.Worksheets("MachineData")
    Dim lRow As Long
    
    With ws.Range(FirstCellAddress)
        Dim lCell As Range
        Set lCell = .Resize(ws.Rows.Count - .Row + 1) _
            .Find("*", , xlValues, , , xlPrevious)
        If lCell Is Nothing Then Exit Sub ' no data in column
        lRow = lCell.Row
    End With
    
End Sub

Non-Empty

Sub LastNonEmptyRow()
    
    Const FirstCellAddress As String = "AD2"
    
    Dim wb As Workbook: Set wb = ThisWorkbook 'workbook containing this code
    Dim ws As Worksheet: Set ws = wb.Worksheets("MachineData")
    Dim lRow As Long
    
    With ws.Range(FirstCellAddress)
        Dim lCell As Range
        Set lCell = .Resize(ws.Rows.Count - .Row + 1) _
            .Find("*", , xlFormulas, , , xlPrevious)
        If lCell Is Nothing Then Exit Sub ' no data in column
        lRow = lCell.Row
    End With
    
End Sub

针对您的特定上下文,即 table

末尾有空白单元格
lrow3 = Cells(Rows.Count, 30).End(xlUp).End(xlUp).Row