0

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

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

4

2 回答 2

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 中,工具 --> 选项,选中Require Variable Declaration旁边的框。
于 2013-07-17T03:33:06.567 回答
1

由于“子地址”的设置方式,它不起作用。将其更改为:

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
于 2013-07-17T01:53:39.373 回答