通过VBA过滤器弹出消息框

时间:2013-08-08 17:58:17

标签: vba filter messagebox

我希望在特定日期通过某个数据集(使用过滤器)进行宏过滤。如果它没有找到日期,我想要一个弹出消息框,说明没有进行任何交易,如果它确实找到了日期,我希望它复制该日期的整个数据集。在下面,我告诉它过滤该日期。我没有问题复制数据集,如果日期没有出现在过滤器中,我似乎无法弹出消息框。

`     '复制新购买     窗口(“文件名”)。激活         MonthlyBuys.Activate

        ActiveSheet.Range("$A$1:$CN$760").AutoFilter Field:=14, Criteria1:="SA68"

        ActiveSheet.Range("$A$1:$CN$760").AutoFilter Field:=10, Operator:= _

        xlFilterValues, Criteria2:=Array(1, "08/20/2013")

        Lastrow = MonthlyBuys.Cells(Rows.Count, 1).End(xlUp).Row
            If WorksheetFunction.CountA(Range("A2:CN" & Lastrow)) = 0 Then
                MsgBox ("No New Transactions for" & Now)
            Else
                MonthlyBuys.Range("A2:CN" & Lastrow).Copy
       End If`

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

CountA计算指定范围内的非空白细胞数。过滤范围时,实际上并未删除该行中的值,因此它们将在CountA公式中计为非空白。这就是为什么你的MsgBox永远不会被击中的原因。

执行过滤器时,未显示的行的高度将更改为0.如果整个数据范围被过滤掉(对您不可见),则该范围的高度应为0.因此,您应该检查过滤范围的高度,而不是计算空白值。从

更新您的IF声明
If WorksheetFunction.CountA(Range("A2:CN" & Lastrow)) = 0 Then

为...

If Range("A2:CN" & Lastrow).Height = 0 Then