Excel中指向不同工作表的超链接下拉列表

Excel中指向不同工作表的超链接下拉列表,excel,vba,excel-formula,hyperlink,worksheet,Excel,Vba,Excel Formula,Hyperlink,Worksheet,我有5张不同的纸:S1、S2、S3、S4、S5。和一个“信息”表,其中我有整体信息,在每一行中,我想要一个下拉列表,并直接链接到其中一个表(S1、S2、S3、S4、S5)。我试着使用间接函数和地址,但它不是动态的。有没有办法制作一个下拉列表,其中包含直接内置的工作表超链接 我希望我能描述一下我的情况 无需重新发明车轮。这已经内置到Excel中。右键单击左下角的图纸导航箭头,将弹出图纸列表。单击要转到的工作表。隐藏的工作表(如我截图中的Sheet3)将不会列出 无需重新发明车轮。这已经内置到Exc

我有5张不同的纸:S1、S2、S3、S4、S5。和一个“信息”表,其中我有整体信息,在每一行中,我想要一个下拉列表,并直接链接到其中一个表(S1、S2、S3、S4、S5)。我试着使用间接函数和地址,但它不是动态的。有没有办法制作一个下拉列表,其中包含直接内置的工作表超链接


我希望我能描述一下我的情况

无需重新发明车轮。这已经内置到Excel中。右键单击左下角的图纸导航箭头,将弹出图纸列表。单击要转到的工作表。隐藏的工作表(如我截图中的Sheet3)将不会列出


无需重新发明车轮。这已经内置到Excel中。右键单击左下角的图纸导航箭头,将弹出图纸列表。单击要转到的工作表。隐藏的工作表(如我截图中的Sheet3)将不会列出


在单元格中放置一个下拉列表,例如,A5

B5中输入:

=HYPERLINK("#" & A5 & "!A1",A5)
这将创建一个“热”超链接,指向在下拉列表中拾取的工作表的单元格A1

编辑#1:

将您的下拉列表放在列A中。每个下拉列表都可以选择任何工作表。然后在工作表代码区域输入:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim A As Range, sht As String, sh As Worksheet

    Set A = Range("A:A")
    If Intersect(Target, A) Is Nothing Then Exit Sub

    sht = Target.Value
    For Each sh In Sheets
        If sh.Name = sht Then
            sh.Activate
        End If
    Next sh
End Sub
无论何时更改列a中的值,代码都会检查该值,即新值是有效的图纸名称。如果是,代码将跳转到该工作表。如果它不是一个有效的名称,则不会发生任何不好的情况

这种方法的优点是,如果添加/删除工作表,则不需要更改代码

因为它是工作表代码,所以安装和自动使用都非常容易:

  • 在Excel窗口底部附近的选项卡名称上单击鼠标右键
  • 选择查看代码-这将打开一个VBE窗口
  • 粘贴内容并关闭VBE窗口
  • 如果您有任何顾虑,请先在试用工作表上试用

    如果保存工作簿,宏将与工作簿一起保存。 如果在2003年以后使用Excel版本,则必须保存 文件的格式为.xlsm而不是.xlsx

    删除宏,请执行以下操作:

  • 如上所述打开VBE窗口
  • 清除代码
  • 关闭VBE窗口
  • 要了解有关宏的更多信息,请参阅:

    要了解有关事件宏(工作表代码)的详细信息,请参阅:


    必须启用宏才能工作在单元格中放置一个下拉列表,例如,A5

    B5中输入:

    =HYPERLINK("#" & A5 & "!A1",A5)
    
    这将创建一个“热”超链接,指向在下拉列表中拾取的工作表的单元格A1

    编辑#1:

    将您的下拉列表放在列A中。每个下拉列表都可以选择任何工作表。然后在工作表代码区域输入:

    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim A As Range, sht As String, sh As Worksheet
    
        Set A = Range("A:A")
        If Intersect(Target, A) Is Nothing Then Exit Sub
    
        sht = Target.Value
        For Each sh In Sheets
            If sh.Name = sht Then
                sh.Activate
            End If
        Next sh
    End Sub
    
    无论何时更改列a中的值,代码都会检查该值,即新值是有效的图纸名称。如果是,代码将跳转到该工作表。如果它不是一个有效的名称,则不会发生任何不好的情况

    这种方法的优点是,如果添加/删除工作表,则不需要更改代码

    因为它是工作表代码,所以安装和自动使用都非常容易:

  • 在Excel窗口底部附近的选项卡名称上单击鼠标右键
  • 选择查看代码-这将打开一个VBE窗口
  • 粘贴内容并关闭VBE窗口
  • 如果您有任何顾虑,请先在试用工作表上试用

    如果保存工作簿,宏将与工作簿一起保存。 如果在2003年以后使用Excel版本,则必须保存 文件的格式为.xlsm而不是.xlsx

    删除宏,请执行以下操作:

  • 如上所述打开VBE窗口
  • 清除代码
  • 关闭VBE窗口
  • 要了解有关宏的更多信息,请参阅:

    要了解有关事件宏(工作表代码)的详细信息,请参阅:


    必须启用宏才能工作

    我知道这一点。。我的问题是如何将这两个列合并为一个?例如:在“A5单元格”中,在从下拉列表中选择S2后,我应该能够单击“A5单元格”中的相同S2,这应该转到S2工作表。我希望你能理解我的问题。@SpandanRout我想到了一种方法,可以用VBA实现你的“单细胞”目标…………仍然感兴趣??绝对感兴趣!!那会很有帮助的。谢谢@请看我的编辑,我知道。。我的问题是如何将这两个列合并为一个?例如:在“A5单元格”中,在从下拉列表中选择S2后,我应该能够单击“A5单元格”中的相同S2,这应该转到S2工作表。我希望你能理解我的问题。@SpandanRout我想到了一种方法,可以用VBA实现你的“单细胞”目标…………仍然感兴趣??绝对感兴趣!!那会很有帮助的。谢谢@SpandanRout查看我的编辑#1