VBA工作簿

时间:2017-04-27 16:57:29

标签: vba excel-vba hyperlink named-ranges excel

我正在尝试创建VBA代码,以识别工作簿中的命名区域,并为每个区域创建超链接。这些超链接需要能够复制到其他文档。

我找到了两个例子 - 每个人都做了一半的工作,但是在组合它们时遇到了麻烦:

1)查找并列出范围:

Sub namedranges()

For Each n In ThisWorkbook.Names
    i = i + 1
    Range("a" & i + 1) = n.Name
Next n

End Sub

2)创建所有工作表的超链接:

Sub CreateLinksToAllSheets()

Dim sh As Worksheet
Dim cell As Range
For Each sh In ActiveWorkbook.Worksheets
    If ActiveSheet.Name <> sh.Name Then
        ActiveCell.Hyperlinks.Add Anchor:=Selection, Address:="",   SubAddress:="'" & sh.Name & "'" & "!A1", TextToDisplay:=sh.Name
        ActiveCell.Offset(1, 0).Select
    End If
Next sh

End Sub

当我合并时,如下所示,我得到一个未设置对象/变量的错误。

Sub hyperlinknamedranges()

Dim sh as worksheet
Dim cell as range
For Each n in Thisworkbook.names
    ' ActiveCell.Hyperlinks.Add Anchor:=Selection, Address:="",    SubAddress:="'" & sh.Name & "'" & "#" & "'" & n.name & "'", 
    ActiveCell.Offset(1, 0).Select
next n

End Sub

最终代码不需要生成范围列表,如第一个示例中所做的那样。

2 个答案:

答案 0 :(得分:0)

我认为你正在使用类似下面代码的东西,它会在列“A”(从第2行开始)的每个单元格中添加,命名范围的名称,并且一旦你点击{链接到它就链接到它{1}}。

<强>代码

Hyperlink

答案 1 :(得分:0)

Sheet2.Select

Range("a1").Select

Dim nm As Name

  For Each nm In Names

    ActiveCell.Value = nm.Name

    ActiveSheet.Hyperlinks.Add Anchor:=ActiveCell, Address:="", SubAddress:= _
    nm.RefersTo

    ActiveCell.Offset(1, 0).Select

  Next nm

End Sub