【问题标题】:Clicking on a dynamic hyperlink with VBA to jump to a new position within the same sheet单击带有 VBA 的动态超链接以跳转到同一工作表中的新位置
【发布时间】:2019-06-28 13:28:45
【问题描述】:

我有一大块 VBA 代码可以生成结果表。它相当大,为了更好、更快地挖掘它,我在工作表顶部添加了一个动态超链接,旁边有一个下拉菜单。下拉该项目,单击超链接,然后您会快速转到您想要访问的电子表格部分。

我被要求让它变得更简单,当您从下拉菜单中选择一个项目时,自动将您带到正确的位置。所以一个触发宏来点击一个动态超链接。

好的,到目前为止,一切都很好。做一些谷歌搜索,我最终得到以下结果:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("HyperlinkType")) Is Nothing Then ClickHyperlink
End Sub

Private Sub ClickHyperlink()

ThisWorkbook.Names("HyperLinkTotal").RefersToRange.Hyperlinks(1).Follow

End Sub

不幸的是,这会导致下标超出范围,这显然可能发生在动态超链接中。

超链接公式供参考:

=IFERROR(HYPERLINK("#Totals!B"&MATCH(HyperlinkType,B:B,0),"Jump to "&HyperlinkType),"Please enter a valid type")

1) 如何解决下标超出范围的问题? 2)有比超链接(1)更好的方法吗?在我看来,它几乎就像是在为超链接编制索引,但我不确定这正是我正在寻找的——我正在寻找单元格中的超链接,而不是工作簿中的第一个。我可能是误会了。

以前的例子,以及堆栈溢出的类似问题: Excel Macro executing Hyperlink shows 'Subscript out of range error' - 没有答案
Hyperlinks.Follow error: Run-time error '9': Subscript out of range - 用于解决特定问题的完全不同的方法(XY 问题)
Hyperlink code shows Subscript out of range error vba excel - 使用保留字作为变量

VBA to open Excel hyperlink does not work when hyperlink generated with a formula - 似乎很有希望,我认为这可能会解决它。

【问题讨论】:

  • 做每个人都说摆脱的事情来加速你的代码。 SELECT 当您使用 VBA 记录器时,它会提供用于选择单元格的编码。因此,如果您可以计算要结束的工作表和单元格,您可以将其作为单独的代码块执行,然后在最后使用 select 将您带到该单元格。不是说它更好,只是一种替代方法。
  • 这是一个很好的观点——我可以直接使用 select 方法,而不是尝试使用超链接对象,这也会让我跳到那里。打算调查一下,我设法触发了一个看起来很有希望的不同错误

标签: excel vba hyperlink


【解决方案1】:

感谢@Forward Ed,我能够使用 select 让它工作。

原谅懒惰的缺少变量:

Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Me.Range("HyperlinkType")) Is Nothing Then ClickHyperlink (Me.Range("HyperlinkType").Value)

End Sub

Private Sub ClickHyperlink(ActuarialString As String)
Dim ResultRow As Long

ResultRow = Me.Range("B:B").Find(ActuarialString).Row

Me.Cells(ResultRow, 2).Select

End Sub

换一种说法:如果您想点击动态超链接,您可能会遇到 XY 问题。退一步,弄清楚你想要完成什么,并使用 VBA 的其他工具之一来完成它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    相关资源
    最近更新 更多