Как получить последний лист в Excel VBA?

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

у меня есть процедура сортировки, которая работает, мне просто нужен синтаксис для перемещения. Вот что у меня есть:

Private Sub CommandButton263_Click()
Dim i As Integer
Dim j As Integer
For i = 1 To Sheets.Count
  For j = 1 To Sheets.Count - 1
        If UCase$(Sheets(j).Name) > UCase$(Sheets(j + 1).Name) Then
           Sheets(j).Move After:=Sheets(j + 1)
        End If
  Next j
Next i
Sheets("Navigation").Select
Sheets("Navigation").Move Before:=Sheets(1)
Sheets("Navigation (2)").Select
Sheets("Navigation (2)").Move Before:=Sheets(2)
Sheets("EstimateTemplate").Select
Sheets("EstimateTemplate").Move Before:=Sheets(3)
Sheets("Formulas").Select
Sheets("Formulas").Move Before:=Sheets(4)
Sheets("End").Move After:=Sheets(EOF)  'what can i use instead of EOF?
Sheets("Navigation (2)").Select
End Sub

в частности, глядя на строку Sheets("End").Move After:=Sheets(EOF) -что я могу использовать, чтобы получить последний лист?

25
задан Jonno
05.11.2022 6:05 Количество просмотров материала 3217
Распечатать страницу

2 ответа

Sheets("End").Move after:=Worksheets(Worksheets.Count)

листах.Count вернет общее количество листов, а Worksheets (index) выберет лист с определенным номером. Объединяя оба, вы должны получить последний, что бы это ни было.

11
отвечен Jonno 2022-11-06 13:53

Я бы сначала переименовать листы VBA свойство кодовое имя, чтобы быть значимым. Вместо "Sheet1" или что бы это ни было, сделайте их значимыми модификаторами

прямо сейчас, если кто-то меняет имя листа, ваш VBA ломается.

Если ваш лист имеет вместо название вы можете сделать очень хорошие вещи, как:

EndSheet.Move after:=Worksheets(Worksheets.Count)

это означает, что даже если кто-то переименует этот лист, скажите "сломать макрос!"это не так... перерыв ваш макрос.

кроме того, что касается Selects, вы можете сделать это, чтобы сделать ваш код более надежным, быстрым и надежным:

NavigationSheet.Move Before:=Sheets(1)
NavigationTwoSheet.Move Before:=Sheets(2)
EstimateTemplateSheet.Move Before:=Sheets(3)
FormulasSheet.Move Before:=Sheets(4)
EndSheet.Move After:=Sheets(EOF)  
NavigationTwoSheet.Select

(предполагается, что вы переименовали все листы под кодовым именем в VBE)

0
отвечен enderland 2022-11-06 16:10

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх