基于复选框的VBA过滤器

时间:2018-09-25 22:55:58

标签: excel vba checkbox userform

我想知道是否有人可以帮助我。我创建了一个用户表单,用于更改Excel工作表上的过滤器。我有包含优先级从1-3的列。启动表单时,我可以选择将报告打印为PDF,但是我希望允许用户在打印为PDF之前根据优先级应用/过滤结果。我有三个要在过滤器代码中使用的复选框(请参见下图)。在这个地方,我不确定如何在Criteria部分中输入代码,因此当用户检查框优先级1时,它将在打印前过滤掉该部分。如果值是true,我将分配与优先级关联的数值。然后在应用过滤器时将该数字用作值“条件”。有一个更好的方法吗?

ActiveSheet.Range("$W$7:$AG$4501").AutoFilter Field:=6, Criteria:= "What Do i Put Here?" 

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

您只需要检查复选框的名称,并将其排列正确的标准即可。请注意,您的条件只是您要过滤的值,这里1, 2, or 3

对于您的测试语句,您也可以只说If CheckBox1 Then,它将返回If True Then,其中True对应于一个复选框。

我在以下代码中明确将其写出,因此很清楚。我猜测单击某种提交按钮时可能需要调用此方法。


If CheckBox1 = True Then
    ActiveSheet.Range("$W$7:$AG$4501").AutoFilter Field:=6, Criteria:= 1
ElseIf CheckBox2 = True Then
    ActiveSheet.Range("$W$7:$AG$4501").AutoFilter Field:=6, Criteria:= 2
ElseIf CheckBox3 = True Then
    ActiveSheet.Range("$W$7:$AG$4501").AutoFilter Field:=6, Criteria:= 3
End If