Hyperlinks.add VBA

时间:2013-11-15 11:51:21

标签: excel vba excel-vba hyperlink

我在VBA编程。我想使用ActiveSheet对象的hyperlink.add方法创建超链接,但它不起作用。

这是我的代码:

'set the link
Dim mainsheet As Worksheet
Dim ws As Worksheet
Set mainsheet = ActiveWorkbook.Sheets("Main")
Set ws = ActiveWorkbook.Sheets(rowNumb + 2)


mainsheet.Hyperlinks.Add Anchor:=mainsheet.Range(rowTablecontent + rowNumb, colTablecontent + 3), _
                Address:="", _
                SubAddress:=ws.Name & "!A1", _
                TextToDisplay:="Link"

代码说明:

我有一个Mainsheet,我有一个目录和一个启动宏的按钮。启动宏时,程序导入4个文件(每个文件有一个工作表,等于主工作簿中的一个工作表。有了这4个文件的信息,大约有500个工作表将被生成。 关键是:现在我想要一个目录。为每张表格中的主菜单链接。

变量:

  • rowTablecontent - >排在内容表的顶部
  • colTablecontent - >内容表左侧的列
  • rowNumb - >输入文件上的Rowcounter

我在另一个程序中使用相同的代码,它在哪里工作,所以我不知道我做错了什么。

有谁知道可能出现什么问题?

从评论中复制的重要信息

  

在我的项目中,我有4个输入文件/表。它有效。但是在自动创建的工作表上,它不起作用。

2 个答案:

答案 0 :(得分:3)

因为你没有提到你得到的错误。可能会有很多错误。其中一些是。

  1. Activesheet不是您认为的那个。
  2. 选择不是范围
  3. 工作表不存在
  4. rowNumb不是有效数字
  5. 可以保护工作表/工作簿(谢谢Sam)
  6. 试试这个

    Option Explicit
    
    Sub Sample()
        Dim rowNumb As Long
        Dim ws As Worksheet
    
        '~~> Change this to the relevant number
        rowNumb = 1
    
        If TypeOf Selection Is Range Then
            On Error Resume Next
            Set ws = ThisWorkbook.Sheets(rowNumb + 1)
            If Err.Number <> 0 Then
                MsgBox "Sheet doesn't exist"
                Exit Sub
            End If
            On Error GoTo 0
    
            ThisWorkbook.ActiveSheet.Hyperlinks.Add Anchor:=Selection, _
                                       Address:="", _
                                       SubAddress:=ws.Name & "!A1", _
                                       TextToDisplay:="Link"
        Else
            MsgBox "InValid Range Object"
        End If
    End Sub
    

    从评论中跟进

      

    但是在自动创建的工作表上,它不起作用。

    你错过了我的第一点。 Activesheet is not the one you think it is.

    以下是有关如何向新创建的文件添加超链接的示例。此演示说明如何向新创建的文件的Sheet1 A1添加超链接。超链接将解决新创建的文件的Sheet2 A1

    Sub Sample()
        Dim wb As Workbook
        Dim ws1 As Worksheet, ws2 As Worksheet
    
        Set wb = Workbooks.Add
    
        Set ws1 = wb.Sheets("Sheet1")
        Set ws2 = wb.Sheets("Sheet2")
    
        ws1.Hyperlinks.Add Anchor:=ws1.Range("A1"), _
                                           Address:="", _
                                           SubAddress:=ws2.Name & "!A1", _
                                           TextToDisplay:="Link"
    End Sub
    

    我没有做任何错误处理。我相信你可以照顾到这一点。

答案 1 :(得分:1)

我测试了这个,它可以在Excel 2007上运行,你可以试试吗?

编辑以解决您的问题。

Sub sofMacro20000463(ByVal rowNumb)
'
' Dim rowNumb
'
' rowNumb = ActiveCell.Row
'
  ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", _
    SubAddress:=Sheets(rowNumb + 1).Name & "!A1", _
    TextToDisplay:="Link"
'
End Sub


Sub sofMacroDoIt()
'
  Dim rowNumb
'
  rowNumb = ActiveCell.Row
'
  sofMacro20000463 rowNumb
'
End Sub

这允许从活动表中导航到行索引功能的工作表。

可以使用其他参数调用sofMacro20000463()。