【问题标题】:Programmatically creating a hyperlink to a worksheet以编程方式创建指向工作表的超链接
【发布时间】:2013-07-15 08:44:19
【问题描述】:

我一直在研究这个,我真的不知道如何使用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

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

【问题讨论】:

  • 对不起,我觉得我不够清楚。我正在尝试在“摘要页面”上添加超链接,该超链接将链接到新的复制页面

标签: excel hyperlink vba


【解决方案1】:

将您的代码替换为以下内容。确保在制作 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 中,工具 --> 选项,选中需要变量声明旁边的框。

【讨论】:

  • 您好 @Head of Catering,我已经尝试了您的代码,它运行良好,但它与我所寻找的相反,我很抱歉没有很好地解释这种情况。您提供的代码将在新副本页面上成功创建超链接,该超链接将链接回摘要页面。但我正在寻找的是摘要页面上的超链接,它将链接到新的复制页面。不过,非常感谢您的帮助,不胜感激,顺便说一下,我尝试更改代码,但它不起作用。
  • 我明白了。我编辑了代码以从摘要表链接到 PartSheet 的新副本。再试一次,让我知道它是否有效。只是让你知道,我改变了两件事。 1)切换链接和目标工作表中引用的工作表,2)设置超链接时在工作表名称的任一侧添加刻度线
  • 天啊,非常感谢,终于可以了,我在创建超链接后查看了参考,是的,它缺少 ' ' ,所以这就是 & & 会做的。终于明白了。非常感谢你的帮助 。真的很欣赏它!!!!
【解决方案2】:

由于“子地址”的设置方式,它无法正常工作。改成这样:

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

【讨论】:

  • 你好@Ripster ,我已经尝试了代码,它仍然无法正常工作,也许代码的逻辑一开始就错了?无论如何,非常感谢您的帮助,我还在尝试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-18
  • 1970-01-01
  • 2014-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多