【问题标题】:Best way to get the last non-empty worksheet获取最后一个非空工作表的最佳方法
【发布时间】:2018-06-13 03:21:41
【问题描述】:

我正在尝试为一个组写一个

  • 有一个工作簿,他们每天在其中创建新的工作表,并且还有
  • Sheet 1Sheet 2Sheet 3 位于其一长串工作表的末尾。

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

所以我需要知道如何获得最后一张非空工作表,这样我才能获取这些数据并将其适当地放在摘要中。

【问题讨论】:

    标签: vba vba excel


    【解决方案1】:

    此函数从右到左遍历工作表,直到找到非空白工作表,并返回其名称

    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
    

    【讨论】:

    • 谢谢!我一直在潜入 excel VBA 并且学得很快,但我认为它与我所知道的语言不同。
    【解决方案2】:

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

    Find 方法中的 xlFormulas 参数将找到隐藏的单元格(但不是过滤的单元格),而 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-19
      • 2021-07-19
      • 1970-01-01
      • 1970-01-01
      • 2014-11-10
      • 2018-08-17
      • 2012-09-13
      • 1970-01-01
      相关资源
      最近更新 更多