【发布时间】:2018-06-13 03:21:41
【问题描述】:
我正在尝试为一个组写一个vba 宏
- 有一个工作簿,他们每天在其中创建新的工作表,并且还有
- Sheet 1、Sheet 2 和 Sheet 3 位于其一长串工作表的末尾。
我需要在汇总此信息的不同工作簿的新列中创建外部单元格引用。
所以我需要知道如何获得最后一张非空工作表,这样我才能获取这些数据并将其适当地放在摘要中。
【问题讨论】:
我正在尝试为一个组写一个vba 宏
我需要在汇总此信息的不同工作簿的新列中创建外部单元格引用。
所以我需要知道如何获得最后一张非空工作表,这样我才能获取这些数据并将其适当地放在摘要中。
【问题讨论】:
此函数从右到左遍历工作表,直到找到非空白工作表,并返回其名称
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
【讨论】:
上述方法将忽略具有单个单元格条目的工作表,虽然这似乎是一个狡辩,但寻找非空白单元格的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
【讨论】: