首页 文章

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

提问于
浏览
0

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

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 回答

  • 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
    

相关问题