【问题标题】:Follow Hyperlink to Separate Workbook and AutoFilter by Value in Source Workbook按照超链接在源工作簿中按值分隔工作簿和自动筛选
【发布时间】: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


    【解决方案1】:

    尝试更改此行,因为它当前将引用新打开的工作簿。您可能需要更改工作表索引(或名称)

    lField = ThisWorkbook.Sheets(1).Cells(1, 1).EntireRow.Find("Isometric Number", LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False).Column
    

    【讨论】:

    • 我已根据您的回复更新了订单项。我现在得到的错误是“对象变量或未设置块变量(错误 91)”,当我尝试超链接到同一工作簿中的另一个工作表和另一个工作簿的超链接时。
    • 文本“等距数”是否肯定在相关工作表的第一行?我使用了 sheet(1),但您可能需要使用不同的索引或工作表名称(例如 sheet("Fred"))进行调整。
    • 尤里卡!是的,我很肯定我的索引部分是正确的(做了一些试验和错误来确认)。该网页还解释了 .Sheet() 索引号是什么:msdn.microsoft.com/en-us/library/office/… 问题是等距数字不在第一行,而是在第二行。一旦我删除了第一行(将“等距数字”带到第一行位置),它就像一个魅力。你知道代码的哪一部分会让我看第二行而不是第一行吗?
    • 另外,我必须将代码从“ThisWorkbook”更改为“ActiveWorkbook”,以便在点击超链接后将过滤应用于我正在打开的工作簿。
    • ThisWorkbook 是指包含代码的工作簿。要查看第二行,请将单元格 (1,1) 更改为单元格 (2,1)。
    猜你喜欢
    • 2011-06-16
    • 2019-01-16
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    • 2021-06-04
    • 1970-01-01
    相关资源
    最近更新 更多