我在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个工作表将被生成。 关键是:现在我想要一个目录。为每张表格中的主菜单链接。
变量:
我在另一个程序中使用相同的代码,它在哪里工作,所以我不知道我做错了什么。
有谁知道可能出现什么问题?
从评论中复制的重要信息
在我的项目中,我有4个输入文件/表。它有效。但是在自动创建的工作表上,它不起作用。
答案 0 :(得分:3)
因为你没有提到你得到的错误。可能会有很多错误。其中一些是。
试试这个
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()。