Excel 2010选择包含ActiveX复选框的案例

时间:2013-12-13 20:39:07

标签: excel excel-vba excel-2010 vba

我的Excel文件中有三列当前正在自动筛选。我的任务是设置多个过滤器。我开始的方式是使用ActiveX复选框构建一个选项“菜单”,并将“链接单元”属性分配给右侧的单元格。因此,如果选中第一个选项,则单元格BB30显示“TRUE”。

问题始于第一列有16个项目,第二列有11个项目,第3个列有5个。我老板希望它工作的方式是从第1列和第1列中选择2个选项从第2列开始,它会过滤该信息的数据(单独的表格)。

示例数据:

Column A            Column B             Column C
--------            --------             --------
aCol1               bCol1                cCol1
aCol2               bCol2                cCol2
aCol3               bCol3                cCol3
aCol4               bCol4                cCol4
aCol5               bCol5                cCol5
aCol6               bCol6
aCol7               bCol7
aCol8               bCol8
etc.                etc.

因此,如果我选择aCol1aCol2bCol3 - 我们要过滤(ACOL1 ='TRUE'或ACOL2 ='TRUE')和BCOL3 ='TRUE '然后过滤数据。

我做了一些搜索,似乎使用SELECT CASE是要走的路,但这会给我800多个不同的场景......更不用说如果没有选择某个列的任何内容(只有aCol1和例如,bCol8被选中。

有更好的方法吗?

如果我必须为每个场景编写一个单独的CASE语句,Excel 2010会处理那么多吗?

最后,一旦我确定了所有选择的内容,我该如何编写VBA以使其真正做到这一点?

1 个答案:

答案 0 :(得分:0)

不要写一个选择块。

您要做的是遍历每一列,如果值为true,则添加一个带有相关值的自动过滤器。您可以为每个列执行此操作,并根据您的需要进行过滤。

至于如何使用VBA完成此操作,您只需使用该范围并使用要过滤的值调用AutoFilter()方法。我假设你对VBA知之甚少。

Range("A1:Dx").AutoFilter Field:=x, Value:=x