Option Explicit
Sub MakeSheetIndex()
Dim ws As Worksheet, wsIndex As Worksheet
Dim rw As Integer
Set wsIndex = ThisWorkbook.Worksheets("Index")
wsIndex.Cells.Clear
wsIndex.Range("A1") = "Sheet name"
rw = 1
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> wsIndex.Name Then
rw = rw + 1
wsIndex.Cells(rw, 1).Formula = "=HYPERLINK(" & "'" & ws.Name & "'!A1,""" & ws.Name & """)"
End If
Next ws
wsIndex.Range("A1").CurrentRegion.Sort Key1:="Sheet name", Order1:=xlAscending, Header:=xlYes
wsIndex.Columns.AutoFit
End Sub
Option Explicit
Private Sub lbSheets_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
'activate chosen sheet
Worksheets(lbSheets.Value).Activate
Me.Hide
End Sub
Private Sub UserForm_Activate()
Dim ws As Worksheet
'clear the list box
lbSheets.Clear
'reload the listbox
For Each ws In Worksheets
lbSheets.AddItem ws.Name
Next
End Sub
Alternatively, you could set up an index sheet with a list of a sheet names and a hyperlink to take you to each sheet.