2016-04-12 4 views
2

В настоящее время я использую этот код для отображения числа «RCA Pending», найденного в столбце. В окне сообщения отображается правильное количество раз, когда оно найдено в столбце, однако оно создает поле для каждого экземпляра (т. Е. Если в столбце есть два экземпляра, когда рабочая книга открыта, будет отображаться «Найдено 2 RCA Pending (s) ", тогда, когда пользователь нажимает OK, появляется второе всплывающее сообщение, в котором появляется одно и то же. Если их 5, вы получите 5 последовательных всплывающих окон).Отображение результатов COUNTIF в окне сообщений

Sub Auto_Open() 

    Dim row As Range 
    For Each row In Worksheets("Swivel").UsedRange.Rows 
     If row.Cells(1, "AB").Value = "RCA Pending" Then 
      MsgBox "Found " & WorksheetFunction.CountIf(Columns("AB"), "RCA Pending") & " RCA Pending(s)", vbInformation, "RCA Pending Found" 
     End If 
    Next row 

End Sub 

Как это можно изменить, чтобы показать общее количество экземпляров и не получить несколько всплывающих окон?

В качестве побочного примечания я использую UsedRange, потому что диапазон всегда растет. Модуль, в котором находится этот код, имеет Option Explicit наверху.

+1

Почему вы используете петлю на всех? Похоже, вы начали в одном направлении, а затем изменили тактику. Избавьтесь от цикла, и оператор IF имеет только поле сообщения. –

+0

Вы можете выполнить 'exit for' после строки' MsgBox', но, как указал Скотт, можно просто найти что-то или что-то вместо цикла. – MatthewD

+1

@ScottCraner Целью утверждения IF было предотвращение всплывающего окна, если есть нулевые экземпляры. Я попробую это и предоставит обратную связь. –

ответ

2

Это то, что вы пытаетесь?

Sub Auto_Open() 
    Dim instances As Long 

    instances = WorksheetFunction.CountIf(Columns("AB"), "RCA Pending") 

    If instances <> 0 Then _ 
    MsgBox "Found " & instances & " RCA Pending(s)", vbInformation, "RCA Pending Found" 
End Sub 

ИЛИ

Sub Auto_Open() 
    Dim instances As Long 

    instances = WorksheetFunction.CountIf(Columns("AB"), "RCA Pending") 

    MsgBox "We Found " & instances & " instances of RCA Pending(s)", _ 
    vbInformation, "RCA Pending Found" 
End Sub 
Смежные вопросы