If...Then...Else-Anweisung

Führt eine Gruppe von Anweisungen unter Berücksichtigung des Wertes eines Ausdrucks aus.

Syntax

If-BedingungThen [ Anweisungen ] [ Elseelsestatements ]

Es ist auch folgende Syntax im Blockformat möglich:

If-BedingungThen
[ statements ]
[ ElseIfcondition-nThen
[ elseifstatements ]]
[ Else
[ elsestatements ]]
End If

Die Syntax des If...Then...Else-Ausdrucks enthält die folgenden Bestandteile.

Bestandteil Beschreibung
Bedingung Erforderlich. Mindestens einer der folgenden beiden Ausdruckstypen:

Numerischer Ausdruck oder Zeichenfolgenausdruck, der True oder False ist. Wenn condition = Null, wird condition als False behandelt.

Ein Ausdruck des Formulars TypeOfobjectnameIsobjecttype. objectname ist eine beliebige Objektreferenz, und objecttype ist ein beliebiger gültiger Objekttyp. Der Ausdruck ist True , wenn objectname den durch objecttype angegebenen Objekttyp aufweist. Andernfalls ist es False.
statements Optional in Blockformat; erforderlich in einzeiligem Format ohne Else-Klausel. Durch Doppelpunkte getrennte Anweisungen, die ausgeführt werden, wenn condition den Wert True aufweist.
condition-n Optional. Entspricht condition.
elseifstatements Optional. Mindestens ein Ausdruck, der ausgeführt wird, wenn die zugehörige condition-n den Wert True aufweist.
elsestatements Optional. Mindestens ein Ausdruck, der ausgeführt wird, wenn kein bisheriger condition- oder condition-n-Ausdruck als True ausgewertet wurde.

HinwBemerkungeneise

Verwenden Sie die einzeilige Form (erste Syntax) für kurze, einfache Tests. Das Blockformat (zweite Syntax) bietet jedoch mehr Struktur und Flexibilität als das einzeilige Format und ist im Allgemeinen einfacher zu lesen, zu verwalten und zu debuggen.

Hinweis

Im einzeiligen Format können mehrere Ausdrücke als Ergebnis der If...Then-Entscheidung ausgeführt werden. Alle Anweisungen müssen sich auf derselben Zeile befinden und durch Doppelpunkte getrennt sein, wie in der folgenden Anweisung:

If A > 10 Then A = A + 1 : B = B + A : C = C + B 

Eine If-Anweisung im Blockformat muss die erste Anweisung auf einer Zeile sein. Die Else-, ElseIf- und End If-Bestandteile der Anweisung können nur eine Zeilennummer oder eine Zeilenbezeichnung vor sich haben. If im Blockformat muss mit einer End If-Anweisung enden.

Um zu bestimmen, ob eine Anweisung eine If-Anweisung im Blockformat ist, untersuchen Sie, was nach dem Then-Schlüsselwort folgt. Wenn etwas anderes als ein Kommentar nach Then in derselben Zeile angezeigt wird, wird die Anweisung als einzeilige If-Anweisung behandelt.

Die Klauseln Else und ElseIf sind optional. Es können beliebige viele ElseIf-Klauseln in einem If-Block vorhanden sein, jedoch keine nach einer Else-Klausel. If-Anweisungen im Blockformat können verschachtelt werden; das heißt, ineinander enthalten sein.

Bei der Ausführung einer If-Anweisung im Blockformat (zweite Syntax), wird condition getestet. Wenn condition = True, werden die Anweisungen nach Then ausgeführt. Wenn condition = False, wird wiederum jede ElseIf-Bedingung (sofern vorhanden) ausgewertet. Wenn eine True-Bedingung gefunden wird, werden die Anweisungen direkt nach der verknüpften Then-Anweisung ausgeführt. Wenn keine der ElseIf-Bedingungen True ist (oder wenn keine ElseIf-Klauseln vorhanden sind), werden die Anweisungen nach Else ausgeführt. Nach dem Ausführen der Anweisungen nach Then oder Else wird die Ausführung bei der Anweisung nach End If fortgesetzt.

Tipp

Select Case ist evtl. nützlicher bei der Auswertung eines einzelnen Ausdrucks mit verschiedenen möglichen Aktionen. Die TypeOfobjectnameIsobjecttype-Klausel kann jedoch nicht mit der Select Case-Anweisung verwendet werden.

Hinweis

TypeOf kann nicht in Verbindung mit anderen festen Datentypen als Objekt verwendet werden, z. B. Long, Integer usw.

Beispiel

In diesem Beispiel werden sowohl das Blockformat als auch das einzeilige Format der If...Then...Else-Anweisung aufgeführt. Auch die Verwendung von If TypeOf...Then...Else wird veranschaulicht.

Dim Number, Digits, MyString 
Number = 53 ' Initialize variable. 
If Number < 10 Then 
 Digits = 1 
ElseIf Number < 100 Then 
' Condition evaluates to True so the next statement is executed. 
 Digits = 2 
Else 
 Digits = 3 
End If 
 
' Assign a value using the single-line form of syntax. 
If Digits = 1 Then MyString = "One" Else MyString = "More than one" 

Verwenden Sie die If TypeOf-Konstruktion, um zu ermitteln, ob das an eine Prozedur übergebene Steuerelement ein Textfeld ist.

Sub ControlProcessor(MyControl As Control) 
 If TypeOf MyControl Is CommandButton Then 
 Debug.Print "You passed in a " & TypeName(MyControl) 
 ElseIf TypeOf MyControl Is CheckBox Then 
 Debug.Print "You passed in a " & TypeName(MyControl) 
 ElseIf TypeOf MyControl Is TextBox Then 
 Debug.Print "You passed in a " & TypeName(MyControl) 
 End If 
End Sub

Siehe auch

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.