Окно сообщения Excel VBA, когда в автофильтре нет пустых полей и макрос остановки - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть простой макрос для установки одного столбца автофильтра (поле 4) на определенное значение, а второй столбец автофильтра (поле 5) показывает только пустые записи.Иногда нет пустых записей, и в этой ситуации есть ли способ остановить функцию фильтра и предоставить окно сообщения, чтобы уведомить, что пустые записи не были найдены?

Когда мой код заканчивается в данный момент, столбец (поле 5), в котором нет пробелов для фильтрации, на самом деле выглядит так, будто был применен автофильтр, смотрящий на изменение состояния стрелки раскрывающегося списка.Полные непустые ячейки видны по-прежнему.

Sub PoPODRecvdStatus()
'
' PoPODRecvdStatus Macro
' Filters Courier/Status by POD Received and Consignment to Blank
'
Application.ScreenUpdating = False
'
ActiveSheet.Range("$A$1:$K$12543").AutoFilter Field:=4, Criteria1:= _
    "POD RECEIVED"
ActiveSheet.Range("$A$1:$K$12543").AutoFilter Field:=5, Criteria1:="<>"
Application.ScreenUpdating = True
End Sub

1 Ответ

0 голосов
/ 28 сентября 2018

На основании комментария я понимаю, что вы можете захотеть что-то подобное.Код будет отображать окно сообщения, если при фильтрации по POD RECEIVED нет пустых ячеек, и отображать эти строки, в противном случае он будет отображать "пробелы" с POD RECEIVED

Sub PoPODRecvdStatus()
'
' PoPODRecvdStatus Macro
' Filters Courier/Status by POD Received and Consignment to Blank
'
    Application.ScreenUpdating = False
    '
    ActiveSheet.Range("$A$1:$K$12543").AutoFilter Field:=4, Criteria1:= _
                                                  "POD RECEIVED"
    ActiveSheet.Range("$A$1:$K$12543").AutoFilter Field:=5, Criteria1:="="

    Dim rng As Range
    Set rng = ActiveSheet.AutoFilter.Range
    If rng.Columns(5).SpecialCells(xlCellTypeVisible).Count - 1 = 0 Then
        MsgBox "No blank cells in column 5 for POD RECEIVED", vbOKOnly, "POD_RECEIVED"
        ActiveSheet.Range("$A$1:$K$12543").AutoFilter Field:=5, Criteria1:="<>"
    End If
    Application.ScreenUpdating = True

End Sub
...