Excel宏创建超链接 - 不工作

时间:2017-09-09 12:20:35

标签: excel vba excel-vba

大家好我试图创建一个宏来执行以下操作:

创建工作表创建使用超链接创建的工作表的主列表。

我尝试使用宏自动完成此过程,如下所示:

  Sheets("MasterSheet").Copy Before:=Sheets(1)
Sheets("MasterSheet (2)").Name = Sheets("setup project").Range("c4").Text
Range("C2").FormulaR1C1 = Sheets("setup project").Range("c4").Text
Range("C3").FormulaR1C1 = Sheets("setup project").Range("d4").Text
Dim sheetname As Worksheet
sheetname = Sheets(ActiveSheet.Name)
Dim targetsheet As Range
targetsheet = ActiveSheet.Range("c4")
Sheets("project overview").Hyperlinks.add Anchor:=Sheets("project overview").Range("B6"), Address:="", SubAddress:= _
    "'" & sheetname & "'!" & targetsheet.Address, TextToDisplay:=Sheets("setup project").Range("c4").Text 

Unfortunatley我这不起作用,我无法a)获取工作的超链接或引用我刚刚创建的工作表。 B)我无法使用为超链接名称创建的工作表的名称。任何帮助将不胜感激!

亲切的问候

2 个答案:

答案 0 :(得分:1)

使用Objects引用您的Worksheets并为WS指定.Range, .Cells etc,为对象分配Set。像:

Sub Test()
Dim nWs as Worksheet, sPro as Worksheet, oPro as Worksheet
Set sPro = Worksheets("setup project")
Set oPro = Worksheets("project overview")
Sheets("MasterSheet").Copy Before:=Sheets(1)
Set nWs = Worksheets(1)
With nWs 
  .Name =sPro.Range("C4").Value
  .Range("C2").Value = .Name
  .Range("C3").Value = sPro.Range("D4").Value
End With
oPro.Hyperlinks.add Anchor:= oPro.Range("B6"), Address:="", SubAddress:= _
    "'" & nWs.Name & "'!C4", TextToDisplay:= nWs.Name
End Sub

在提问之前,您应该考虑进行搜索。有一个Excel VBA的Microsoft文档可以帮助您解决语法问题。

答案 1 :(得分:1)

请尝试以下代码:

    Dim sheetname As Worksheet
    Dim targetsheet As Range

    Sheets("MasterSheet").Copy Before:=Sheets(1)
    Sheets("MasterSheet (2)").Name = Sheets("setup project").Range("c4").Text
    Range("C2").FormulaR1C1 = Sheets("setup project").Range("c4").Text
    Range("C3").FormulaR1C1 = Sheets("setup project").Range("d4").Text


    Set sheetname = Sheets(ActiveSheet.Name)

    Set targetsheet = ActiveSheet.Range("c4")        
    Sheets("project overview").Hyperlinks.Add Anchor:=Sheets("project overview").Range("B6"), Address:="", SubAddress:= _
        "'" & sheetname.Name & "'!" & targetsheet.Address, TextToDisplay:=Sheets("setup project").Range("c4").Text

希望得到这个帮助。