【发布时间】:2017-04-01 13:08:28
【问题描述】:
我有一个代码,允许我在同一工作簿中跟踪指向单独工作表的超链接,并通过与我的超链接关联的值过滤此类工作表。请注意,我首先在 VBA 进程之外创建超链接。我就是这样做的:
a) 在“开发者”选项卡下打开 Visual Basic
b) 右键单击要添加宏的工作簿,然后单击“插入”>“模块”
c) 将以下代码复制并粘贴到模块中:
Sub Filter(sCriteria As String)
lField = Cells(1, 1).EntireRow.Find("Isometric Number", LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False).Column
Range("a1").AutoFilter Field:=lField, _
Criteria1:=sCriteria
End Sub
我的理解是,此模块告诉工作簿通过下面调用的特定值自动过滤超链接选项卡上名为 Isometric Number 的列。您可以将列名称更改为您想要的任何名称,但需要在模块中以及您希望自动过滤发生的选项卡上进行更改。
D) 将以下代码复制并粘贴到您的主选项卡(展开 Microsoft Excel 对象并双击您的主选项卡 - 超链接和我正在过滤的内容所在的位置)。
Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Call Filter(sCriteria:=Cells(Target.Parent.Row, 2).Value)
End Sub
此代码确定上述模块自动过滤的过滤条件。现在它被设置为根据与超链接在同一行和第二列中的单元格中的值进行过滤。
现在终于来了一个问题:当我的超链接指向单独的工作簿(而不是同一工作簿中的工作表)时,我收到以下错误:对象变量或未设置块变量(错误 91)。当我运行调试工具时,这是突出显示的行:
lField = Cells(1, 1).EntireRow.Find("Isometric Number", LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False).Column
我已经对此进行了大量阅读,但我很难弄清楚如何阅读和理解代码。最接近答案的是这篇文章:Can Excel vba invoke an autofilter when a hyperlink is clicked to open new workbook?
【问题讨论】:
标签: excel hyperlink autofilter vba