【发布时间】: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 方法,而不是尝试使用超链接对象,这也会让我跳到那里。打算调查一下,我设法触发了一个看起来很有希望的不同错误