Лучший способ получить последний непустой лист - PullRequest
4 голосов
/ 11 ноября 2008

Я пытаюсь написать макрос для группы tha

  • имеет одну рабочую книгу, в которой они ежедневно создают новые рабочие листы, а также имеют
  • Лист 1 , Лист 2 и Лист 3 в конце их длинного списка листов.

Мне нужно создать ссылку на внешнюю ячейку в новом столбце другой рабочей книги, где эта информация суммируется.

Так что мне нужно знать, как получить последний непустой лист , чтобы я мог получить эти данные и соответствующим образом поместить их в сводку.

Ответы [ 2 ]

6 голосов
/ 11 ноября 2008

Эта функция работает по листам справа налево, пока не найдет непустой лист, и вернет его имя

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 голос
/ 09 ноября 2011

Приведенный выше метод игнорирует лист с одной записью в ячейке, хотя это может показаться пустяком, 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...