在 Excel 上创建筛选开关?

在 Excel 上创建筛选开关?

我有一个 Excel 文档,其中有一个名为“员工”的表。

我想创建可以切换某些过滤器(开/关)的按钮。

例子:

Default table:
Id | Name  | Last name | Status
---+-------+-----------+---------
 1 | Alice | Alpha     | Active
 2 | Bob   | Beta      | Active
 3 | Alice | Charlie   | Inactive
 4 | Carol | Delta     | Active
 5 | Lewis | Echo      | Inactive

[Toggle active/all]:
Id | Name  | Last name | Status
---+-------+-----------+---------
 1 | Alice | Alpha     | Active
 2 | Bob   | Beta      | Active
 4 | Carol | Delta     | Active

[Toggle Alice/all]:
Id | Name  | Last name | Status
---+-------+-----------+---------
 1 | Alice | Alpha     | Active
 3 | Alice | Charlie   | Inactive

这两个按钮只会在适当的列上创建过滤器,如果已经创建,则删除它。这样,我可以使用这两个按钮来过滤活跃的 Alice 员工。

[Toggle active/all] + [Toggle Alice/all]:
Id | Name  | Last name | Status
---+-------+-----------+---------
 1 | Alice | Alpha     | Active

到目前为止,我可以通过这种方式创建一个过滤器:

' Create a filter on 'Alice'
ActiveWorkbook.Sheets("Employees").ListObjects("Employees").Range.AutoFilter Field:=2, Criteria1:="Alice"
' Create a filter on 'active'
ActiveWorkbook.Sheets("Employees").ListObjects("Employees").Range.AutoFilter Field:=4, Criteria1:="Active"

但我不知道如何检查这个过滤器是否被激活。

答案1

您需要在 Sheet 上创建一个切换按钮

我来说说怎么做吧。

创建一个命令按钮,将其命名为 Fltrbutton,将其标题修改为 Alice。然后在 VB 编辑器中创建此代码。

Sub Fltrbutton_click()

ActiveSheet.AutofilterMode = False

If Fltrbutton.Caption = "Alice" then

      ActiveSheet.Range("$A$2:$D$20").AutoFilter Field:=2, Criteria1:="Alice"

    Fltrbutton.Caption = "Active"

Endif

If Fltrbutton.Caption = "Active" then

     ActiveSheet.Range("$A$30:$D$50").AutoFilter Field:=4, Criteria1:="Active"

   Fltrbutton.Caption = "Alice"

Endif

End Sub

我确实希望这个示例代码能够帮助您正确地执行这两个标准的代码。

注意:根据需要更改数据范围和其他内容。

相关内容