我有一个代码,允许我跟踪一个超链接到同一个工作簿中的一个单独的工作表,并通过与我的超链接相关联的值来过滤这个工作表。请注意,我首先创建了VBA进程之外的超链接。我就是这样做的:
( a)在Developer选项卡下打开Visual
( 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
我的理解是,这个模块告诉工作簿通过下面调用的特定值自动过滤超链接选项卡上名为等距号的列。您可以将列名更改为您想要的任何名称,但是它需要在模块中和在您希望自动筛选器发生的选项卡上进行更改。
( D)将以下代码复制并粘贴到主选项卡(展开Microsoft对象并双击主选项卡--超链接和我通过生命过滤的内容)。
Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Call Filter(sCriteria:=Cells(Target.Parent.Row, 2).Value)
End Sub
此代码确定上面要自动筛选的模块的筛选条件。现在,它被设置为通过与超级链接同一行的单元格中的值和第二列中的值进行筛选。
最后,对于这个问题:当我的超链接引用一个单独的工作簿(而不是同一个工作簿中的一个工作表)时,我得到以下错误: Object变量或带块变量not (错误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?
发布于 2016-11-17 12:59:07
尝试更改这一行,因为它目前将引用新打开的工作簿。您可能需要更改工作表索引(或名称)
lField = ThisWorkbook.Sheets(1).Cells(1, 1).EntireRow.Find("Isometric Number", LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False).Column
https://stackoverflow.com/questions/40664255
复制