Hyperlinks.add VBA

我在VBA编程。 我想使用ActiveSheet对象的hyperlink.add方法创build超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,其上有一个目录和一个用于启动macros的button。 当启动macros时,程序会导入4个文件(每个文件有一个表格,并且在主工作簿中等于一张表格),这4个文件的信息大概有500张表格,现在我想要有一个目录,为每张表单上的一个链接。

variables:

  • rowTablecontent – >内容表顶部的行
  • colTablecontent – >内容表左侧的列
  • rowNumb – >input文件上的Rowcounter

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

有谁知道什么可能是错的?

从评论中复制的重要信息

在我的项目中,我有4个input文件/工作表。 它在那里工作。 但在自动创build的工作表上,它不起作用。

既然你没有提到你得到了什么错误。 可能有很多错误。 他们之中有一些是。

  1. Activesheet不是你认为的那个。
  2. select不是一个范围
  3. 工作表不存在
  4. rowNumb不是一个有效的数字
  5. 工作表/工作簿可以保护(谢谢萨姆)

尝试这个

 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 

跟随评论

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

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

以下是如何将超链接添加到新创build的文件的示例。 此演示显示如何将超链接添加到新build文件的Sheet1 A1 。 该超链接将处理新build文件的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 

我没有做任何error handling。 我相信你可以照顾。

我testing了这个,它在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 

这允许从activesheet的行索引function导航到工作表。

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