以编程方式创建指向工作表的超链接

时间:2013-07-16 23:56:40

标签: excel-vba hyperlink vba excel

我一直在研究这个问题,我真的不知道如何使用vba,而且我一直在网上寻找解决方案一段时间没有成功。这就是我想要做的事情:

我有一个宏将复制工作表(名为“PartSheet”)并将其放在工作表列表的末尾,所以如果我继续按下宏,它将创建如下页面:

PartSheet(2),PartSheet(3)用于选项卡名称等。

现在我正在尝试添加一个超链接到这个宏,以便每次我创建一个新的副本 它还将创建指向第一个工作表的超链接(名为“摘要”)

这是我写的代码:

Sub Test2()
    Sheets(Sheets.Count).Select
    Name = ActiveSheet.Name
    Sheets("Summary").Select
    Range("A10").Select
    ActiveCell.FormulaR1C1 = ""
    Range("A10").Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
        " 'Name' !A1 ", TextToDisplay:="Link"
End Sub

当我运行宏时,它将创建超链接,但它将是无效的引用。

2 个答案:

答案 0 :(得分:3)

使用以下代码替换您的代码。确保在制作PartSheet的新副本后立即调用它。

Sub AddHyperlink()
    Dim targetSheet As Worksheet
    Dim targetRange As Range
    Dim linkedSheet As Worksheet
    Dim linkRange As Range

    'set variable to the sheet the hyperlink will link to
    Set targetSheet = ThisWorkbook.Sheets(ActiveSheet.Name)

    ' specify the range on the summary sheet to link to
    Set targetRange = targetSheet.Range("A1")

    ' set variable to sheet that will have the hyperlink
    Set linkedSheet = ThisWorkbook.Sheets("Summary")

    ' specify where on that sheet we'll create the hyperlink
    Set linkRange = linkedSheet.Range("B4")

    ' create the hypperlink on the copied sheet pointing
    ' back to the summary sheet
    linkedSheet.Hyperlinks.Add Anchor:=linkRange, Address:="", SubAddress:= _
        "'" & targetSheet.Name & "'!" & targetRange.Address, _
        TextToDisplay:="Go To " & targetSheet.Name

End Sub

避免漏洞的提示:

  1. 在编写Excel VBA代码时始终避免选择或激活任何内容。
  2. 始终要求变量声明(在VBE,工具 - >选项中,选中需要变量声明旁边的框。

答案 1 :(得分:1)

由于“SubAddress”的设置方式,它无法正常工作。将其更改为:

Sub Test2()
    Dim Name As String

    Sheets(Sheets.Count).Select
    Name = ActiveSheet.Name
    Sheets("Summary").Select
    Range("A10").Select
    ActiveCell.FormulaR1C1 = ""
    Range("A10").Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:=Name & "!A1", TextToDisplay:="Link"
End Sub