【问题标题】:Excel VBA Creating a Hyperlink in a different worksheet to a different worksheet in the same workbookExcel VBA 在不同工作表中创建指向同一工作簿中不同工作表的超链接
【发布时间】:2017-10-18 23:23:36
【问题描述】:

我正在使用 Excel 中的一个项目来验证数据集,每当列中的两个单元格有重复项时,我想将重复项的位置写入另一个工作表,其中包含一堆有关错误的信息在数据中。

所以我的数据在 worksheet1 中,当我运行我的代码时,我正在编写一个指向 worksheet2 中某个单元格的超链接,该链接指向 worksheet1 中的错误。

我在另一个堆栈问题中发现了一些几乎可以完成此任务的代码...

Hyperlink to Existing Worksheet in actual Workbook

ActiveSheet.Hyperlinks.Add ActiveCell, "", Sheets(fortnr).Name & "!A1"

但是,这会在您当前所在(或处于活动状态)的工作簿中创建一个超链接。

我稍微修改了代码,但似乎无法运行...

Sheets("Sheet3").Hyperlinks.Add Cells(3, 3), "", Sheets("Sheet1").Name & "!B2", _
"", "Hello"

我也试过了

Sheets("Sheet3").Activate
ActiveSheet.Hyperlinks.Add Cells(3, 3), "", Sheets(fortnr).Name & "!A1"
Sheets("Sheet1").Activate

但它不起作用。也没有产生错误,所以我真的不知道为什么这不起作用。

【问题讨论】:

  • @PortlandRunner 是的,当我在工作表 1 中运行代码时,工作表 1 中的 C3 得到显示“Hello”的单元格,工作表 3 中的 C3 为空。我也将代码粘贴到了一个全新的工作簿中,因此这些工作表不可能被命名为其他任何名称。

标签: vba excel hyperlink


【解决方案1】:

您的锚单元格没有指定要锚定的工作表,因此它默认为活动工作表。

改成这样:

Sheets("Sheet3").Hyperlinks.Add Sheets("Sheet3").Cells(3, 3), "", Sheets("Sheet1").Name & "!B2", "", "Hello"

为什么.Hyperlinks之前需要一张表?

基于 MSDN 文档here 我相信这是因为HyperLinkssheets 类的方法,所以它是调用该方法的唯一方法。您可以使用Activesheet 或在开始时调用任何工作表来调用该方法,然后将超链接锚分配到您想要的位置。

【讨论】:

  • 太棒了,谢谢。但是为什么我们在 Hyperlinks.Add 之前还要有一个 Sheets("Sheet3") 呢?我以为那是指定锚点的地方。
【解决方案2】:

也许你可以试试这个……

Dim WS as Worksheet
ActiveSheet.Hyperlinks.add Anchor:=Selection, Address:="", SubAddress:= _
        "'" & WS.Name & "'" & "!A1", TextToDisplay:=WS.Name

因为当你查看链接时,它通常会显示

file:///name'WS.name'!A1

这对“ ”可能已被省略。

【讨论】:

    【解决方案3】:

    这些是我用来在 VBA 上创建指向 URL 或特定电子表格的超链接

    Sheets("RogueOne").Hyperlinks.Add Anchor:=Sheets("RogueOne").Cells(3, 4), Address:="http://wired.com", ScreenTip:="Wired", TextToDisplay:="WIRED"
        Sheets("RogueOne").Hyperlinks.Add Sheets("RogueOne").Cells(5, 5), "", Sheets("RogueTwo").Name & "!c2", "", "RogueTwo"
    

    【讨论】:

      【解决方案4】:

      在我的情况下,当我单击由 Portlands Runner 代码创建的超链接时,我遇到了“超链接无效”错误。用单引号包围并加入 Sheets("Sheet1").Name 解决了该问题,并且该错误消失了。如果你有同样的经历,那就这样使用吧:

      Sheets("Sheet3").Hyperlinks.Add Sheets("Sheet3").Cells(3, 3), "", "'" & Sheets("Sheet1").Name & "'" & "!B2", "", "Hello"
      

      【讨论】:

        猜你喜欢
        • 2015-07-18
        • 1970-01-01
        • 2019-02-11
        • 2021-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-14
        相关资源
        最近更新 更多