在单元格中插入超链接并打开隐藏的工作表[Excel VBA]

在单元格中插入超链接并打开隐藏的工作表[Excel VBA],vba,excel,hyperlink,Vba,Excel,Hyperlink,我是excel VBA新手,我正在尝试使用VBA代码在单元格中插入超链接。单击该值后,我希望能够打开隐藏的工作表 到目前为止,我所完成的是:使用按钮打开隐藏的工作表 可以帮助我找到一种方法,在这种方法中,它将调用函数模块,而不是调用main模块?谢谢。要在Sheet1中动态创建超链接,您需要使用以下内容: Sub foo() Dim ws As Worksheet i = 1 For Each ws In ActiveWorkbook.Worksheets If ws.Name

我是excel VBA新手,我正在尝试使用VBA代码在单元格中插入超链接。单击该值后,我希望能够打开隐藏的工作表

到目前为止,我所完成的是:使用按钮打开隐藏的工作表


可以帮助我找到一种方法,在这种方法中,它将调用函数模块,而不是调用main模块?谢谢。

要在Sheet1中动态创建超链接,您需要使用以下内容:

Sub foo()
Dim ws As Worksheet
i = 1
    For Each ws In ActiveWorkbook.Worksheets
    If ws.Name <> "Sheet1" Then
        Sheet1.Cells(i, 1).Hyperlinks.Add Anchor:=Sheet1.Cells(i, 1), Address:="", SubAddress:=ws.Name & "!A1", TextToDisplay:="Go To:"
        i = i + 1
    End If
    Next
End Sub
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    If Target.Range.Address = "$A$2" Then
        Sheet2.Visible = xlSheetVisible
        Sheet2.Select
    End If
    'copy the if statement above for each hyperlink
End Sub
更新:

因此,在我的测试中,我有5张工作表,它们都是xlSheetVeryHidden,除了第一张叫做Main的工作表外,当我运行下面的宏时,会创建以下超链接:

Sub foo()
Dim ws As Worksheet
i = 1
    For Each ws In ActiveWorkbook.Worksheets
    If ws.Name <> "Main" Then
        Sheets("Main").Cells(i, 1).Hyperlinks.Add Anchor:=Sheet1.Cells(i, 1), Address:="", SubAddress:=ws.Name & "!A1", TextToDisplay:="Go To:"
        i = i + 1
    End If
    Next
End Sub
这是我放置代码的地方:


此设置的问题是,即使超链接可以由宏foo动态创建,要更改可见性,您必须手动添加每个Target.Range.Address以取消隐藏相关的工作表,因此在我的示例中,我只对其进行了编码,以便当用户单击包含超链接的工作表1的A2时,然后,Sheet2将变为可见,您将导航到它…

您好,谢谢您的帮助,但我尝试了它,但它不起作用。我还更新了问题。我已经尝试并测试了上述解决方案,它确实对我有效,。。。您无法直接通过超链接单击调用函数,但您可以做的是添加超链接,并让工作表\u FollowHyperlink在执行选择之前为您取消隐藏,然后转到相关工作表。。。如果您需要更好地了解如何实现上述解决方案,我可以用一些分步指南更新我的答案?嗨,Xabier,我可能需要这方面的分步指南。希望你能理解,我对这件事真的很陌生。非常感谢。@WandaMaximoff我已经更新了我的答案,并给了你我如何设置它的一步一步的场景,请看一看并试一试,我相信你会让它工作的…:嗨,Xabier,我想我开始理解逻辑了。我还在尝试。我会更新你,如果我得到它的工作或如果我有进一步的问题。谢谢您:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    If Target.Range.Address = "$A$2" Then
        Sheet2.Visible = xlSheetVisible
        Sheet2.Select
    End If
    'copy the if statement above for each hyperlink
End Sub
Sub foo()
Dim ws As Worksheet
i = 1
    For Each ws In ActiveWorkbook.Worksheets
    If ws.Name <> "Main" Then
        Sheets("Main").Cells(i, 1).Hyperlinks.Add Anchor:=Sheet1.Cells(i, 1), Address:="", SubAddress:=ws.Name & "!A1", TextToDisplay:="Go To:"
        i = i + 1
    End If
    Next
End Sub
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    If Target.Range.Address = "$A$2" Then
        Sheet2.Visible = xlSheetVisible
        Sheet2.Select
    End If
    'copy the if statement above for each hyperlink
End Sub