How to display the list of sheet names in a range using VBA?

To display a list of sheet names within a specified range in Excel using VBA, you can create a simple macro. This macro iterates through the sheets in the workbook and writes their names to a specified range in a worksheet. Here’s a step-by-step guide to accomplish this:

   Sub ListSheetNames()
       Dim ws As Worksheet
       Dim sheetNameRange As Range
       Dim startCell As Range
       Dim i As Integer
       
       ' Specify the starting cell for listing sheet names
       Set startCell = ThisWorkbook.Sheets("Sheet1").Range("A1")
       
       i = 0
       
       ' Loop through each worksheet in the workbook
       For Each ws In ThisWorkbook.Worksheets
           ' Set the range where the sheet name will be placed
           Set sheetNameRange = startCell.Offset(i, 0)
           
           ' Place the sheet name in the specified cell
           sheetNameRange.Value = ws.Name
           
           ' Increment the counter to move to the next row
           i = i + 1
       Next ws
   End Sub
  • Open the Excel workbook where you want to run the macro.
  • Press `ALT` + `F11` to open the Visual Basic for Applications (VBA) editor.
  • In the VBA editor, insert a new module by clicking on `Insert` > `Module`.
  • In the new module window, type or paste the following VBA code:
  • Modify the code if necessary:
    • Change `”Sheet1″` to the name of the sheet where you want to display the sheet names.
    • Change `”A1″` to the specific starting cell where you want the list to begin.
  • Close the VBA editor and return to your Excel window.
  • Run the macro by pressing `ALT` + `F8`, selecting `ListSheetNames`, and clicking `Run`.

This macro will list all the sheet names starting from the specified cell in the current workbook. Adjust the `startCell` reference as needed to fit your desired output location.

Unlock Your Potential

Excel

Basic - Advanced

Access

Access Basic - Advanced

Power BI

Power BI Basic - Advanced

Help us grow the project