获取最后一个非空工作表的最佳方法

时间:2008-11-11 13:30:30

标签: excel vba excel-vba

我正在尝试为一个组

编写一个
  • 有一个工作簿,他们每天都会创建新的工作表,并且还有
  • 工作表1 工作表2 工作表3 在其长工作表列表的末尾。

我需要在不同工作簿的新列中创建外部单元格引用,以便汇总此信息。

所以我需要知道如何获取最后一张非空表,以便我可以抓取这些数据并将其正确放入摘要中。

2 个答案:

答案 0 :(得分:6)

此功能从右到左贯穿工作表,直到找到非空白工作表,并返回其名称

Function GetLastNonEmptySheetName() As String
Dim i As Long
For i = Worksheets.Count To 1 Step -1
  If Sheets(i).UsedRange.Cells.Count > 1 Then
    GetLastNonEmptySheetName = Sheets(i).Name
    Exit Function
  End If
Next i
End Function

答案 1 :(得分:1)

上面的方法将忽略具有单个单元格条目的工作表,而这似乎是一个狡辩,Find寻找非空白单元格将提供更多确定性。

xlFormulas方法中的Find参数会找到隐藏的单元格(但不会过滤过的单元格),而xlValues则不会。

Sub FindLastSht()
    Dim lngCnt As Long
    Dim rng1 As Range
    Dim strSht As String
    With ActiveWorkbook
        For lngCnt = .Worksheets.Count To 1 Step -1
            Set rng1 = .Sheets(lngCnt).Cells.Find("*", , xlFormulas)
            If Not rng1 Is Nothing Then
                strSht = .Sheets(lngCnt).Name
                Exit For
            End If
        Next lngCnt
        If Len(strSht) > 0 Then
            MsgBox "Last used sheet in " & .Name & " is " & strSht
        Else
            MsgBox "No data is contained in " & .Name
        End If
    End With
End Sub