首页 > 解决方案 > 当过滤条件可能并不总是出现时使用 VBA 进行过滤

问题描述

我试图让 VBA 过滤一个列,以显示包含 4 个潜在结果的所有结果。

在过滤 3 个短语(如下面的代码中可见)时,我已经成功地实现了它。但是,第四个选项并不总是在数据中,有时我运行此报告时它不会在列中。目前,当我将此选项添加到我的代码中时,它突然根本没有显示任何结果。任何提示或建议都会很棒。

Workbooks("Stock Data.xlsm").Worksheets("Data").Activate
Worksheets("Data").Range("A1").AutoFilter Field:=1, Criteria1:=Array("Apple", "Banana", "Raspberry", "chocolate")

令人讨厌的是,它适用于我最初的 3 个选择,只是因为第四个选项“巧克力”不在数据中,它根本不起作用。

如果我删除“巧克力”选项,那么我会得到我想要的确切结果,但我不想每次获得数据时都必须更改它。

标签: excelvba

解决方案


你需要学会使用Activate. 并添加, Operator:=xlFilterValues

Workbooks("Stock Data.xlsm").Worksheets("Data").Range("A1").AutoFilter Field:=1, Criteria1:=Array("Apple", "Banana", "Raspberry", "chocolate"), Operator:=xlFilterValues 

ThisWorkbook如果宏在,我会使用Workbooks("Stock Data.xlsm")

ThisWorkbook.Sheets("Data").Range("A1").AutoFilter Field:=1, Criteria1:=Array("Apple", "Banana", "Raspberry", "chocolate"), Operator:=xlFilterValues

推荐阅读