2013-08-08 2 views
0

특정 날짜에 대해 필터를 사용하는 특정 데이터 집합을 통해 매크로 필터를 사용하려고합니다. 날짜를 찾지 못하면 트랜잭션이 없다는 팝업 메시지 상자를 표시하고 날짜를 찾으면 그 날짜의 전체 데이터 세트를 복사하고 싶습니다. . 여기 아래에, 나는 그 날짜를 걸러 내라고 말한다. 데이터 세트를 복사하는 데 아무런 문제가 없습니다. 날짜가 필터에 나타나지 않으면 팝업 상자가 나타나지 않는 것 같습니다.VBA 필터를 통한 메시지 상자 팝업

` '복사 새로운 윈도우 ("파일 이름")을 삽니다. 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` 

도움을 주셔서 감사합니다 활성화!

답변

0

CountA은 표시된 범위의 비 공백 셀 수를 계산합니다. 범위를 필터링하면 실제로 해당 행의 값을 삭제하지 않으므로 CountA 수식에 비어 있지 않은 것으로 계산됩니다. 이것이 귀하의 MsgBox이 절대로 안타는 이유입니다.

필터가 실행되면 표시되지 않는 행의 높이가 0으로 변경됩니다. 전체 데이터 범위가 필터링되어 표시되지 않으면 (사용자가 볼 수없는 경우) 해당 범위의 높이는 0이어야합니다. 따라서 빈 값을 계산하는 대신 필터링 된 범위의 높이를 확인해야합니다. ...

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

까지

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

때 내가 입력 날짜 (2013년 8월 20일), 나는 그 날짜에 대한 데이터를 가지고 있지 않더라도, 내가 가지고있는 데이터를 사용자의 IF 문을 업데이트 2013 년 8 월 1 일 왜 그런가요? – user2662170

+0

'CDate ("08/20/2013")' – Jaycal