2017-04-13 6 views
0

Ich muss mehrere Zellen überprüfen, bevor das Makro durch das Änderungsereignis ausgelöst wird.Wie man mehrere Bereiche in Änderungsereignis setzt

Dies ist der Code

Private Sub CBbox_Change() 

If Range("E13:E20") = vbNullString Then 

Call Macro 

End if 

End Sub 

Das Problem, das ich nur einen einzigen Bereich so sagen kann.

If Range("E13") = vbNullString Then 
+0

'und' in der' if' helfen kann –

+2

Sie überprüfen, ob alle von ihnen sind leer oder einer von ihnen? – SJR

+0

Ja, ich überprüfe, dass alle von ihnen leer sind – nx170

Antwort

0

Werfen Sie einen Blick auf WorksheetFunction.CountA Funktion, gibt es keine Notwendigkeit, eine For Schleife zu verwenden.

Sie können mehr lesen über auf MSDN ist

Private Sub CBbox_Change() 

If WorksheetFunction.CountA(Range("E13:E20")) = 0 Then 
    Call Macro 
End If 

End Sub 
+0

Das ist, was ich suche. Ich danke Ihnen für das Teilen. Neues Wissen für mich – nx170

0

Wollen Sie so etwas?

Private Sub CBbox_Change() 
    Status = False 
    For Each Cell In Range("E13:E20") 
     If Cell <> vbNullString Then 
      Status = False 
      Exit For 
     End If 
     Status = True 
    Next Cell 
    If Status Then 
     Call Macro 
    End If 
End Sub 
+0

Dieser Weg funktioniert, aber dann dauert es länger. Gibt es einen anderen Weg? – nx170

+0

Sie sollten grundsätzlich jede Zelle überprüfen, ob sie leer ist oder nicht. Es gibt keinen logischen Weg, um alle gleichzeitig zu überprüfen. WorksheetFunction.CountBlank() ist eine eingebaute Funktion, die auch durch jede Zelle iteriert und die Schleife nicht jederzeit beendet. Dieser Code beendet die Schleife sofort, sobald eine nicht leere Zelle gefunden wird. Es ist also tatsächlich kürzer als es scheint. –

+0

Sie sagen, dass es keinen anderen Weg gibt, als jede Zelle zu überprüfen? – nx170

0

Ein anderer Ansatz

Private Sub CBbox_Change() 

Dim r As Range 

Set r = Range("E13:E20") 

If WorksheetFunction.CountBlank(r) = r.Count Then 
    Call Macro 
End If 

End Sub 
+0

funktioniert nicht – nx170

+0

@SJR da Sie "neue" Sachen lieben, lesen Sie über 'WorksheetFunction.CountA' hier: https: //msdn.microsoft.com/en-us/library/office/ff838049.aspx –

+0

Vielen Dank. Nach einigen Änderungen funktioniert es jetzt gut – nx170