I have a workbook with 26 worksheets in it, and on one page I wish for cells
to reference the names on the worksheet tabs.
I have a workbook with 26 worksheets in it, and on one page I wish for cells
to reference the names on the worksheet tabs.
Here's a macro to create a Table of Contents...
'/==============================================/
Public Sub WorkBookTableOfContents()
'Create a separate worksheet with the name of each sheet
' in the workbook as a hyperlink to that sheet -
' i.e. a Table Of Contents
'07/25/2000 - allow for chart sheets
'08/11/2005 - add Protect/Unprotect information
Dim iRow As Integer, iColumn As Integer, y As Integer
Dim i As Integer, x As Integer, iSheets As Integer
Dim objOutputArea As Object
Dim strTableName As String, strSheetName As String
Dim strOrigCalcStatus As String
strTableName = "Table_of_Contents"
'check for an active workbook
If ActiveWorkbook Is Nothing Then 'no workbooks open, so create one
Workbooks.Add
End If
'Count number of sheets in workbook
iSheets = ActiveWorkbook.Sheets.Count
'Check for duplicate Sheet name
i = ActiveWorkbook.Sheets.Count
For x = 1 To i
If Windows.Count = 0 Then Exit Sub
If UCase(Sheets(x).name) = UCase(strTableName) Then
Sheets(x).Activate
If Err.Number = 9 Then
Exit For
End If
'turn warning messages off
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
'turn warning messages on
Application.DisplayAlerts = True
Exit For
End If
Next
'Add new sheet at end of workbook
' where results will be located
Sheets.Add.Move Before:=Sheets(1)
'Name the new worksheet and set up Titles
ActiveWorkbook.ActiveSheet.name = strTableName
ActiveWorkbook.ActiveSheet.Range("A1").value = _
"Worksheet (hyperlink)"
ActiveWorkbook.ActiveSheet.Range("B1").value = _
"Visible / Hidden"
ActiveWorkbook.ActiveSheet.Range("C1").value = _
"Prot / Un"
ActiveWorkbook.ActiveSheet.Range("D1").value = _
" Notes: "
'Count number of sheets in workbook
iSheets = ActiveWorkbook.Sheets.Count
'Initialize row and column counts for putting
' info into StrTableName sheet
iRow = 1
iColumn = 0
Set objOutputArea = _
ActiveWorkbook.Sheets(strTableName).Range("A1")
'Check Sheet names
For x = 1 To iSheets
strSheetName = Sheets(x).name
'put information into StrTableName worksheet
With objOutputArea
If strSheetName <> strTableName Then
.Offset(iRow, iColumn) = " " & strSheetName
If UCase(TypeName(Sheets(x))) <> "CHART" Then
Sheets(x).Hyperlinks.Add _
Anchor:=objOutputArea.Offset(iRow, _
iColumn), _
Address:="", SubAddress:=Chr(39) & _
strSheetName & Chr(39) & "!A1"
End If
If Sheets(x).Visible = True Then
.Offset(iRow, iColumn + 1) = " Visible"
.Offset(iRow, iColumn).Font.Bold = True
.Offset(iRow, iColumn + 1).Font.Bold = True
Else
.Offset(iRow, iColumn + 1) = " Hidden"
End If
If Sheets(x).ProtectContents = True Then
.Offset(iRow, iColumn + 2) = " P"
Else
.Offset(iRow, iColumn + 2) = " U"
End If
iRow = iRow + 1
End If
End With
Next x
Sheets(strTableName).Activate
'make comment
Range("C1").AddComment
With Range("C1").Comment
.Visible = False
.Text Text:= _
"Protected / Unprotected Worksheet"
End With
'format worksheet
Range("A:D").Select
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.IndentLevel = 0
.ShrinkToFit = False
.MergeCells = False
End With
With Selection.Font
.name = "Tahoma"
'.FontStyle = "Regular"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
'.ColorIndex = xlAutomatic
End With
Range("A2").Select
ActiveWindow.FreezePanes = True
Range("A1").Font.Bold = True
Columns("A:D").EntireColumn.AutoFit
Range("A1:D1").Select
With Selection
.HorizontalAlignment = xlCenter
.Font.Underline = xlUnderlineStyleSingle
End With
Range("B1").Select
With ActiveCell.Characters(Start:=1, Length:=7).Font
.FontStyle = "Bold"
End With
With ActiveCell.Characters(Start:=8, Length:=9).Font
.FontStyle = "Regular"
End With
Columns("A:D").EntireColumn.AutoFit
Range("A1:D1").Font.Underline = _
xlUnderlineStyleSingleAccounting
Range("B:B").HorizontalAlignment = xlCenter
Range("C1").WrapText = True
Columns("C:C").HorizontalAlignment = xlCenter
Rows("1:1").RowHeight = 100
Columns("C:C").ColumnWidth = 5.15
Rows("1:1").EntireRow.AutoFit
Range("D1").HorizontalAlignment = xlLeft
Columns("D:D").ColumnWidth = 65
Range("B1").Select
Selection.AutoFilter
Application.Dialogs(xlDialogWorkbookName).Show
End Sub
'/==============================================/
HTH,
--
Gary Brown
gary_brown@ge_NOSPAM.com
If this post was helpful, please click the ''Yes'' button next to ''Was this
Post Helpfull to you?''.
"trtfn" wrote:
> I have a workbook with 26 worksheets in it, and on one page I wish for cells
> to reference the names on the worksheet tabs.
How have the worksheets been named?
Unique names or just Sheet1, Sheet2 etc?
If Sheet1 etc. a formula
=INDIRECT("Sheet" & (ROW()-1) & "!E3")
Gives Sheet1!E3. When copied down, A2 will be Sheet2!E3, etc.
If unique, you will have to get the names into a list on one sheet and reference
them from that list.
To list the sheets into a sheet in Column A
Best to insert a new worksheet then run the macro.
Private Sub ListSheets()
'list of sheet names starting at A1
Dim Rng As Range
Dim i As Integer
Set Rng = Range("A1")
For Each Sheet In ActiveWorkbook.Sheets
Rng.Offset(i, 0).Value = Sheet.Name
i = i + 1
Next Sheet
End Sub
Gord Dibben Excel MVP
On Thu, 26 Jan 2006 08:16:04 -0800, "trtfn" <trtfn@discussions.microsoft.com>
wrote:
>I have a workbook with 26 worksheets in it, and on one page I wish for cells
>to reference the names on the worksheet tabs.
Gord Dibben MS Excel MVP
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks