首页 > 解决方案 > 双击一个 Excel 工作表,该工作表根据双击的值过滤另一个工作表

问题描述

我有两个工作表:

  1. “摘要” - 包含客户信息,以及
  2. “交易” - 包含分配给唯一客户标识符的客户交易数据(多行)。

我想要做的是能够双击 Sheet1 - Summary 中的唯一客户标识符,然后过滤 Sheet2 交易中的数据。

这些表没有名称,并且作为数据位于工作表中。我已经厌倦了使用以下代码,这些代码已被列为类似问题的解决方案,但不断收到运行时错误“9”消息。

希望有人可以帮助这个初学者。

    If Target.Column = 1 Then
    Worksheets("Sheet1").ListObjects("Table1").Range.AutoFilter Field:=1, Criteria1:=Target.Value
    'amend the SheetName above and below and make sure your table name is correct too
    Worksheets("Sheet1").Select
    End If
End Sub

标签: excelvba

解决方案


如果您的表格“<em>没有名称”,那么它们可能不是表格,而只是数据范围。因此,您的.ListObjects().

如果您在 VBA 编辑器中将以下代码作为 Sheet1 上的 Private Sub 应用,并假设 Sheet2 上的数据“表”开始于A1并且A是您要过滤的列,那么这应该适合您:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, cancel As Boolean)
On Error GoTo GetOut
Application.EnableEvents = False
cancel = True

If ActiveCell.Value = "" Then
 MsgBox "No valid filter value selected"
 GoTo GetOut
End If

   Sheet2.Range("A1").AutoFilter Field:=1, Criteria1:="" & ActiveCell.Value
   Application.Goto Sheet2.Range("A1")

GetOut:
Application.EnableEvents = True
Exit Sub
End Sub

推荐阅读