我有大量的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-似乎很有希望,我认为这可能会解决它。
答案 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的其他工具之一来完成。