I use this code to create a new sheet and list all the sheet names in the workbook with empty rows in between them and then it hides all the empty rows in between the sheet name.
But its taking over over a min to complete is there a more efficient way of doing this?
Sub ListAllSheetNames()
'Disabling the following to speed up the vba code
ActiveSheet.DisplayPageBreaks = False
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'code to create new sheet and list all sheet names in workbook
Dim xWs As Worksheet
On Error Resume Next
xTitleId = "All Sheet Names"
Application.Sheets(xTitleId).Delete
Application.Sheets.Add.Index
Set xWs = Application.ActiveSheet
xWs.Name = xTitleId
For i = 2 To Application.Sheets.Count
'Edit this to adjust the row spacing, number after *
xWs.Range("A" & ((i - 2) * 18) + 1) = Application.Sheets(i).Name
Next
'Hides all empty rows
Set Rng = Range("A1", Range("A15000").End(xlUp))
For Each cel In Rng
If Not cel.Value > 0 Then
cel.EntireRow.Hidden = True
End If
Next cel
Range("A1").Select
'UnDisabling
ActiveSheet.DisplayPageBreaks = True
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub