Vba 用于创建超链接的Excel宏-不工作

Vba 用于创建超链接的Excel宏-不工作,vba,excel,Vba,Excel,您好,我正在尝试创建宏以执行以下操作: 创建工作表创建工作表的主列表,创建的工作表带有指向每个工作表的超链接 我已尝试使用宏自动化此过程,如下所示: Sheets("MasterSheet").Copy Before:=Sheets(1) Sheets("MasterSheet (2)").Name = Sheets("setup project").Range("c4").Text Range("C2").FormulaR1C1 = Sheets("setup project").Rang

您好,我正在尝试创建宏以执行以下操作:

创建工作表创建工作表的主列表,创建的工作表带有指向每个工作表的超链接

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

  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 
不幸的是,我这不起作用,我无法a)获得工作的超链接或对我刚刚创建的工作表的引用。B) 我无法使用为超链接名称创建的工作表的名称。任何帮助都将不胜感激

问候


L

使用
对象
参考您的
工作表
并为
范围、.Cells等指定
WS
,分配对象必须使用
设置
。比如:

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
在提问之前,你应该考虑一下搜索。有一个microsoft Excel VBA文档可以帮助您解决语法问题。

请尝试以下代码:

    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

希望能有所帮助。

感谢UGP花时间提供上述回复。我在这里尝试了一些想法,但还没有找到一个适合我的。上面的代码也失败了,不幸的是,我得到了错误'Method'Name'的对象''u sheet'failed'这段代码有效。您可能应该检查
工作表的拼写-代码中的名称,我使用了提供的名称,但必须与工作簿中的名称有所不同。UGP没有区别,我已检查过您应该始终说错误发生在哪一行,但我猜它在这里
。Name=sPro.Range(“C4”)
当我看到错误消息时。这意味着它无法重命名它创建的工作表,因为已经有一个具有该名称的工作表。这无论如何都无助于解决您的问题。你应该更具体一些。我忘了超链接中的
,但这并不能解释您所犯的错误。如果
工作表(“设置项目”).Range(“C4”).Value
为空,或者已经有一个
工作表
具有此名称,则会出现唯一的选项。我已经实际测试了它。