18.4. Verlassen von Kontrollstrukturen und Prozeduren/Funktionen

Visual Basic führt den Code innerhalb der Kontrollstruktur aus, bis eine Anfangsbedingung erfüllt ist, beendet dann die Kontrollstruktur und führt den restlichen Teil der Prozedur aus. In manchen Situationen lässt sich der Code jedoch beschleunigen, wenn Sie nicht auf die Erfüllung der vorgegebenen Bedingung warten, sondern die Struktur bereits unter einer anderen Bedingung verlassen.

Wenn Sie z.B. ein Datenfeld mit einer Für...Nächste-Schleife nach einem Wert durchsuchen und den Wert bereits beim ersten Schleifendurchlauf finden, besteht kein Grund, das gesamte Datenfeld zu durchsuchen. Sie können folglich die Schleife sofort beenden. Eine ähnliche Situation liegt vor, wenn ein Fehler auftritt bzw. ein bestimmtes Ereignis eintritt, wodurch das Ausführen weiterer Aktionen durch die Prozedur überflüssig wird.
Anweisungen:

Beispiele:

Function bei_5_schluss()
Dim i As Integer
  For i = 1 To 10
 
  Debug.Print "hallo"
    If i = 5 Then Exit For
  Next i
End Function



Hier eine erste Möglichkeit, einer Fehlermeldung mit Programmabbruch zu entgehen.

Function nullFehler(x As Single, y As Single)
  If y = 0 Then
    MsgBox ("Division durch Null nicht möglich")
    Exit Function
  End If
  nullFehler = x / y
End Function

Die folgende Funktion liefert die Position des gesuchten Wertes in der Liste durchsuchter Zellen, wobei von links nach rechts und dann von oben nach unten gezählt wird. Beim Auftreten des gesuchten Wertes werden der Zählvorgang und die Suche unmittelbar beendet.

Function Position(Suchbereich, Suchwert)
Dim Zähler As Integer
  Gefunden =
False
  For Each C In Suchbereich
    Zähler = Zähler + 1
    If C.Value = Suchwert Then
      Gefunden =
True
   
  Exit For ' Zählen und Überprüfen beenden
    End If
  Next C
  If
Gefunden Then
    Position = Zähler
    Else: Position = 0
  End If
End Function



Sollten in einem Suchbereich ungültige Werte gefunden werden, wird die Funktion vorzeitig verlassen.

Function Zahlen(Suchbereich, Suchwert)
Dim Zähl As Integer
  For Each C In Suchbereich
    If C.Value = Suchwert Then
      Zähl = Zähl + 1
     
Else: Exit Function
    End If
  Next C
  Zahlen = Zähl
End Function


5 3 4