超链接.添加 VBA



我正在用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 个输入文件/工作表。它在那里工作。但是在自动创建的工作表上,它不起作用。

由于您没有提到您遇到的错误。可能会有很多错误。其中一些是。

  1. 活动表不是您认为
  2. 的那个。
  3. 所选内容不是一个范围
  4. 工作表不存在
  5. rowNumb 不是有效的数字
  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

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

我测试了这个,它在 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() 可以使用其他参数调用。

相关内容

  • 没有找到相关文章

最新更新