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的工作表上,它不起作用。
既然你没有提到你得到了什么错误。 可能有很多错误。 他们之中有一些是。
- Activesheet不是你认为的那个。
- select不是一个范围
- 工作表不存在
- 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
跟随评论
但在自动创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()可以用其他参数调用。