【问题标题】:create hyperlink in visual basic excel between worksheets在工作表之间的 Visual Basic excel 中创建超链接
【发布时间】:2015-01-30 21:57:25
【问题描述】:

当我使用这个公式时,

Sub IndexingSheets()
    Sheets(1).Range("B3").Formula = _
    "=HYPERLINK(""#" & ThisWorkbook.Sheets(2).Name & "!A5"", ""TextToDisplay"")"
    Sheets(2).Range("A5").Formula = _
    "=HYPERLINK(""#" & ThisWorkbook.Sheets(1).Name & "!B3"", ""TextToDisplay"")"
End Sub

它会创建一个超链接,但是当我单击它时,它显示引用无效。然后,当我在公式栏中更改公式时,我添加了文件名并且它起作用了,所以它现在看起来像这样:

=HYPERLINK("[Book1.xls]'Sheet2 123!A5", "gg")

但原来是这样的:

=HYPERLINK("#Sheet2 123!G20", "gg")

如何更改我在最顶部显示的原始代码,以便:

=HYPERLINK("[Book1.xls]'Sheet2 123!A5", "gg") 

将在公式栏中显示还是格式?我的问题是我现在如何放置文件名而不只是复制文件名本身而不只是将其粘贴到代码中?

我只是想澄清一下,有一个消息框说您应该输入工作表的第二个名称。所以工作表的名称不再只是“Sheet2”了。

例如,您在 msgbox 中输入“123”,工作表的名称现在将变为“Sheet2 123”。消息框已经存在,无需为其创建代码。

【问题讨论】:

  • 但它说编译错误?
  • 好的,让我测试一下。
  • 在下面查看我的答案。让我知道这是否有效。
  • 终于!非常非常感谢!

标签: excel vba


【解决方案1】:

试试这个。您需要在工作表名称周围加上单引号,以说明工作表名称中可能存在的空格。如果省略单引号,则工作表名称​​不得包含任何空格。

Sub IndexingSheets()
    With ThisWorkbook
        .Sheets(1).Range("B3").Formula = _
        "=HYPERLINK(""#'" & .Sheets(2).Name & "'!A5"", ""Jump to Sheet2!A5"")"
        .Sheets(2).Range("A5").Formula = _
        "=HYPERLINK(""#'" & .Sheets(1).Name & "'!B3"", ""Jump to Sheet1!B3"")"
    End With
End Sub

要包含工作簿名称(我认为没有必要):

Sub IndexingSheets()
    With ThisWorkbook
        .Sheets(1).Range("B3").Formula = _
            "=HYPERLINK(""#'[" & .Name & "]" & .Sheets(2).Name & "'!A5"", _
            ""Jump to Sheet2!A5"")"
        .Sheets(2).Range("A5").Formula = _
            "=HYPERLINK(""#'[" & .Name & "]" & .Sheets(1).Name & "'!B3"", _
            ""Jump to Sheet1!B3"")"
    End With
End Sub

还有一种实现相同目的的替代方法——这个方法也包括工作簿名称:

Sub IndexingSheetsWithFileName()
    With ThisWorkbook

        .Sheets(1).Hyperlinks.Add Anchor:=.Sheets(1).Range("B3"), _
            Address:="", SubAddress:= _
            "'[" & .Name & "]" & .Sheets(2).Name & "'!A5", _
            TextToDisplay:="Jump to Sheet2!A5"

        .Sheets(2).Hyperlinks.Add Anchor:=.Sheets(2).Range("A5"), _
            Address:="", SubAddress:= _
            "'[" & .Name & "]" & .Sheets(1).Name & "'!B3", _
            TextToDisplay:="Jump to Sheet1!B3"

    End With
End Sub

【讨论】:

  • 只要有效就不需要。终于成功了!非常感谢!!
  • 没问题!反正我加进去了。
  • 我有一个问题,如果我不希望代码/公式显示在公式栏中怎么办?例如“跳转到工作表”的文本只会显示。我可以使用什么代码?
  • 我建议使用Worksheet_SelectionChange 事件和Application.GoTo 方法。如果您对此有疑问,或者无法弄清楚,请发布一个新问题,例如“如何使普通单元格表现得像超链接”。
猜你喜欢
  • 1970-01-01
  • 2018-10-26
  • 2014-09-08
  • 1970-01-01
  • 1970-01-01
  • 2017-06-14
  • 1970-01-01
  • 2017-05-15
  • 2021-05-31
相关资源
最近更新 更多