我有一个宏来显示单个工作表上的选项卡列表,但我希望宏也显示该选项卡中的数据

时间:2014-02-27 19:37:58

标签: excel vba excel-vba

请忍受这个总菜鸟。这是我要修改的宏。

Private Sub Workbook_Open()
Sheets("TabList").Select
Range("b5").Activate
Dim sh As Worksheet
Dim cell As Range
For Each sh In ActiveWorkbook.Worksheets
    If ActiveSheet.Name <> sh.Name Then
        ActiveCell.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
        "'" & sh.Name & "'" & "!A1", TextToDisplay:=sh.Name
        ActiveCell.Offset(1, 0).Select
    End If
Next sh
End Sub

当我打开工作簿时,此宏打开TabList表并从单元格B5开始创建工作簿中所有选项卡的超链接列表。当这个宏运行时,我希望它从每个工作表的特定单元格中提取数据,并将其显示在TabList工作表上超链接名称旁边的列中,从C5开始。

例如,宏中的一个工作表称为Sheet2,并且具有单元格J8,其具有我想在TabList工作表旁边显示的值。如果Sheet2是列表中的第一个工作表,它将位于位置B5,因此Sheet2!J8的值应显示在单元格C5中。我希望从每个连续的工作表读取相同的单元格,并在列表的下一个条目旁边显示。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

试试这段代码:

Private Sub Workbook_Open()
    Dim sh As Worksheet
    Dim rng As Range
    Dim cell As Range
    Dim tabShName As String

    tabShName = "TabList"
    Sheets(tabShName).Select

    Set rng = Range("B5")

    For Each sh In ThisWorkbook.Worksheets
        If sh.Name <> tabShName Then
            rng.Hyperlinks.Add Anchor:=rng, Address:="", SubAddress:= _
                "'" & sh.Name & "'" & "!A1", TextToDisplay:=sh.Name
            rng.Offset(, 1).Value = sh.Range("J8").Value
            Set rng = rng.Offset(1)
        End If
    Next sh
End Sub