单击带有VBA的动态超链接以跳至同一工作表中的新位置

时间:2019-02-04 18:40:24

标签: excel vba hyperlink

我有大量的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-似乎很有希望,我认为这可能会解决它。

1 个答案:

答案 0 :(得分:0)

感谢@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的其他工具之一来完成。