2016-04-12 15 views
2

Ich verwende derzeit diesen Code, um die in einer Spalte gefundene Anzahl von "RCA Pending" anzuzeigen. Das Meldungsfeld zeigt die korrekte Anzahl der Male, die es in der Spalte gefunden wird, jedoch erstellt es ein Feld für jede Instanz (dh wenn es 2 Instanzen in der Spalte gibt, wenn die Arbeitsmappe geöffnet ist, wird "2 RCA Pending angezeigt (s) ", dann, wenn der Benutzer auf OK klickt, erscheint ein zweites Popup, das dasselbe sagt. Wenn es 5 gibt, erhalten Sie 5 aufeinanderfolgende Popups.Anzeigen von COUNTIF-Ergebnissen in einem Meldungsfeld

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 

Wie kann dies die Gesamtzahl der Instanzen und nicht bekommt mehr Pop-ups zu zeigen, verändert werden?

Als eine Randnotiz verwende ich UsedRange, weil der Bereich immer wächst. Das Modul, in dem sich dieser Code befindet, hat Option Explicit an der Spitze.

+1

Warum verwenden Sie die überhaupt Schleife? Es sieht so aus, als ob du in eine Richtung gestartet bist und dann die Taktik geändert hast. Befreien Sie sich von der Schleife und die IF-Anweisung haben nur das Nachrichtenfeld. –

+0

Sie könnten einen 'exit for' nach der 'MsgBox'-Zeile machen, aber wie scott darauf hinwies, könnte man einfach einen Fund oder etwas anstelle der Schleife machen. – MatthewD

+1

@ScottCraner Die Absicht der IF-Anweisung bestand darin, das Popup zu verhindern, wenn null Instanzen vorhanden sind. Ich werde das versuchen und Feedback geben. –

Antwort

2

Ist das, was Sie versuchen?

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 

ODER

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 
Verwandte Themen