0

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

` ' Copy New Buys Windows("Filename").Activate 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`

谢谢您的帮助!

4

1 回答 1

0

CountA计算指定范围内的非空白单元格的数量。当您过滤一个范围时,您实际上并没有从该行中删除值,因此它们将在CountA公式中计为非空白。这就是为什么你MsgBox的永远不会被击中。

执行过滤器时,未显示的行的高度变为 0。如果整个数据范围都被过滤掉(对您不可见),那么该范围的高度应该为 0。因此,您应该检查过滤范围的高度,而不是计算空白值。更新您的IF声明

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

至...

If Range("A2:CN" & Lastrow).Height = 0 Then
于 2013-08-08T18:53:35.837 回答