Bagaimana cara mendapatkan lembar kerja terakhir di Excel VBA?

6

Saya memiliki lembar bernama "Akhir" yang perlu dipindahkan menjadi lembar terakhir dari semua lembar yang tersedia. Saya perlu melakukan ini menggunakan VBA.

Saya punya semacam rutin yang berfungsi, saya hanya perlu sintaks untuk bergerak. Inilah yang saya miliki:

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

Khusus melihat garis Sheets("End").Move After:=Sheets(EOF)- Apa yang bisa saya gunakan untuk mendapatkan lembar terakhir?

DanM
sumber
2
Hanya FYI - semuanya .Selectberlebihan
Raystafarian

Jawaban:

11

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

Lembar kerja. Jumlah akan mengembalikan jumlah total lembar, dan Lembar Kerja (indeks) memilih lembar kerja pada nomor tertentu. Menggabungkan keduanya, Anda harus mendapatkan yang terakhir, apa pun itu.

Jonno
sumber
terima kasih jonno, itulah yang saya cari. hargai bantuannya.
DanM
@DanM Tidak masalah, senang itu berhasil untuk Anda.
Jonno
0

Saya pertama-tama akan mengganti nama lembar kerja Anda dengan properti CodeName VBA, agar bermakna. Alih-alih "Sheet1" atau apa pun itu, buat mereka pengubah yang bermakna

Saat ini, jika seseorang mengubah nama sheet, VBA Anda rusak.

Jika sheet Anda bukan memiliki CodeName, Anda dapat melakukan hal-hal yang sangat bagus seperti:

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

Ini berarti bahkan jika seseorang mengganti nama lembar kerja itu, katakan untuk "hancurkan makro Anda!" itu tidak akan ... merusak makro Anda.

Selain itu, mengenai Selects, Anda dapat melakukan ini untuk membuat kode Anda lebih andal, lebih cepat, dan kuat:

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

(ini mengasumsikan Anda telah mengganti nama semua lembar kerja Anda CodeName di VBE)

enderland
sumber