按照超链接可在源工作簿中分离工作簿和按值自动筛选



我有一个代码,允许我跟随超链接到同一工作簿中的单独工作表,并通过与我的超链接相关联的值过滤这样的工作表。请注意,我首先在VBA进程之外创建了超链接。我是这样做的:

a)在Developer选项卡下打开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 Objects,双击你的主选项卡-超链接和我过滤的生活)。

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

我已经在这方面做了相当多的阅读,但我有困难弄清楚如何阅读和理解代码。最接近答案的是这篇文章:当点击超链接打开新工作簿时,Excel vba可以调用自动过滤器吗?

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

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

最新更新