我是excel VBA的新手,我正在尝试使用VBA代码在单元格中插入超链接。单击该值后,我希望能够打开隐藏的工作表。
到目前为止,我所做的是:使用 按钮 打开隐藏的工作表。
Sub mainModule(ByVal a_Sheets As String)
'Hide all tabs
For Each sht In ActiveWorkbook.Sheets
If sht.Name <> "MAIN" Then sht.Visible = xlSheetVeryHidden
Next
'View tabs when button is clicked
For i = 0 To UBound(Split(a_Sheets, ","))
Sheets(Split(a_Sheets, ",")(i)).Visible = True
Sheets(Split(a_Sheets, ",")(i)).Activate
Next
End Sub
Sub goHere_Click()
Call mainModule("BIRTHDAYS")
End Sub
我想要做的是当我点击“GO HERE”时,它会打开隐藏的表格。
此外,我找到了一些可以帮助我解决这个问题的方法。
Sub sbCreatingHyperLink()
ActiveSheet.Hyperlinks.Add Range("A5"), "https://www.google.com"
End Sub
可以帮我找出一种方法,而不是“https://www.google.com”,它会调用一个功能模块(Call mainModule("BIRTHDAYS")
)?谢谢。
答案 0 :(得分:1)
要动态创建超链接到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
然后,您还需要更改Worksheet_FollowHyperlink以查看是否已单击超链接,如果是,则取消隐藏工作表并显示它。如下所示:
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
上面的代码创建了以下代码(忽略第一张“Main”):
然后在第一张Sheet的代码后面输入了这段代码:
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
这是我放置代码的地方:
这个设置的问题在于,即使可以通过宏foo()动态创建超链接,要更改可见性,您必须手动添加每个Target.Range.Address来取消隐藏相关的工作表,所以在我的示例中,我只编写了它,以便如果用户单击包含超链接的工作表1的A2,则Sheet2将变为可见,您将导航到它...