首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hyperlinks.add VBA

Hyperlinks.add VBA
EN

Stack Overflow用户
提问于 2013-11-15 11:51:21
回答 2查看 51.8K关注 0票数 3

我在用VBA编程。我想使用hyperlink.add对象的ActiveSheet方法创建超链接,但它不起作用。

这是我的代码:

代码语言:javascript
复制
'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张将被生成。关键是:现在我想要一个目录。对于每个工作表,主表中有一个链接。

变量:

  • rowTablecontent ->内容表顶部的行
  • 内容表左侧的colTablecontent ->列
  • rowNumb -->输入文件上的行计数器

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

有人知道会出什么问题吗?

从注释中复制的重要信息

在我的项目中,我有4个输入文件/工作表。在那起作用了。但是在自动创建的工作表上,它不起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-15 13:01:12

因为你没有提到你所犯的错误。可能会有很多错误。其中一些是。

  1. Activesheet并不是您所认为的那样。
  2. 所选内容不是范围
  3. 纸张不存在
  4. rowNumb不是一个有效的数字
  5. 工作表/工作簿可以得到保护(谢谢萨姆)

尝尝这个

代码语言:javascript
复制
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

代码语言:javascript
复制
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

我不会做任何错误处理。我相信你能处理好的。

票数 4
EN

Stack Overflow用户

发布于 2013-11-15 12:59:23

我测试了这个,它在Excel 2007上工作,你可以试试吗?

编辑以接近您的问题。

代码语言:javascript
复制
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()。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20000463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档