我正在用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"
代码说明:
我有一个主表,上面有一个目录和一个用于启动宏的按钮。启动宏时,程序导入 4 个文件(每个文件都有一个工作表,在主工作簿中等于一个工作表。有了这4个文件的信息,将生成大约500张。关键是:现在我想有一个目录。对于每个工作表,主工作表中都有一个链接。
变量:
- 行表内容 --> 内容表顶部的行
- colTablecontent --> 内容表左侧的列
- rowNumb --> 输入文件上的行计数器
我在另一个程序中使用了相同的代码,在那里它工作,所以我不知道我做错了什么。
有谁知道可能出了什么问题?
从评论中复制的重要信息
在我的项目中,我有 4 个输入文件/工作表。它在那里工作。但是在自动创建的工作表上,它不起作用。
由于您没有提到您遇到的错误。可能会有很多错误。其中一些是。
- 活动表不是您认为 的那个。
- 所选内容不是一个范围
- 工作表不存在
- rowNumb 不是有效的数字
- 工作表/工作簿可以受到保护(谢谢山姆)
试试这个
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
我没有做任何错误处理。 我相信你可以照顾好这一点。
我测试了这个,它在 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() 可以使用其他参数调用。