If...Then...Else-AnweisungIf...Then...Else statement

Führt eine Gruppe von Anweisungen unter Berücksichtigung des Wertes eines Ausdrucks aus.Conditionally executes a group of statements, depending on the value of an expression.

SyntaxSyntax

**If **_condition _Then [statements] [**Else **elsestatements]If condition Then [ statements ] [ Else elsestatements ]


Es ist auch folgende Syntax im Blockformat möglich:Or, you can use the block form syntax:

If condition ThenIf condition Then
[ statements ][ statements ]
[ ElseIf condition-n Then[ ElseIf condition-n Then
[ elseifstatements ]][ elseifstatements ]]
[ Else[ Else
[ elsestatements ]][ elsestatements ]]
End IfEnd If


Die Syntax des If...Then...Else-Ausdrucks enthält die folgenden Bestandteile.The If...Then...Else statement syntax has these parts.

TeilPart BeschreibungDescription
Bedingungcondition Erforderlich.Required. Mindestens einer der folgenden beiden Ausdruckstypen:One or more of the following two types of expressions:

Numerischer Ausdruck oder Zeichenfolgenausdruck, der True oder False ist.A numeric expression or string expression that evaluates to True or False. Wenn condition = Null, wird condition als False behandelt.If condition is Null, condition is treated as False.

Ausdruck im Format TypeOf objectname Is objecttype.An expression of the form TypeOf objectname Is objecttype. objectname ist eine beliebige Objektreferenz, und objecttype ist ein beliebiger gültiger Objekttyp.The objectname is any object reference, and objecttype is any valid object type. Der Ausdruck ist true , wenn ObjectName der durch ObjectType angegebenen __ Objekttyp ist; __ Andernfalls ist der Wert false.The expression is True if objectname is of the object type specified by objecttype; otherwise, it is False.
Anweisungenstatements Optional in Blockformat; erforderlich in einzeiligem Format ohne Else-Klausel.Optional in block form; required in single-line form that has no Else clause. Durch Doppelpunkte getrennte Anweisungen, die ausgeführt werden, wenn condition den Wert True aufweist.One or more statements separated by colons; executed if condition is True.
condition-ncondition-n Optional.Optional. Entspricht condition.Same as condition.
elseifstatementselseifstatements Optional.Optional. Mindestens ein Ausdruck, der ausgeführt wird, wenn die zugehörige condition-n den Wert True aufweist.One or more statements executed if associated condition-n is True.
elsestatementselsestatements Optional.Optional. Mindestens ein Ausdruck, der ausgeführt wird, wenn kein bisheriger condition- oder condition-n-Ausdruck als True ausgewertet wurde.One or more statements executed if no previous condition or condition-n expression is True.

HinweiseRemarks

Mit dem einzeiligen Format (erste Syntax) können Sie einfache Prüfungen durchführen.You can use the single-line form (first syntax) for short, simple 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.However, the block form (second syntax) provides more structure and flexibility than the single-line form and is usually easier to read, maintain, and debug.

Hinweis

Mit dem einzeiligen Format ist es möglich, mehrere Anweisungen als Ergebnis einer If...Then-Entscheidung auszuführen.With the single-line form, it is possible to have multiple statements executed as the result of an If...Then decision. Alle Anweisungen müssen sich auf derselben Zeile befinden und durch Doppelpunkte getrennt sein, wie in der folgenden Anweisung:All statements must be on the same line and separated by colons, as in the following statement:

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.A block form If statement must be the first statement on a line. Die Else-, ElseIf- und End If-Bestandteile der Anweisung können nur eine Zeilennummer oder eine Zeilenbezeichnung vor sich haben.The Else, ElseIf, and End If parts of the statement can have only a line number or line label preceding them. If im Blockformat muss mit einer End If-Anweisung enden.The block If must end with an End If statement.

Um zu bestimmen, ob eine Anweisung eine If-Anweisung im Blockformat ist, untersuchen Sie, was nach dem Then-Schlüsselwort folgt.To determine whether or not a statement is a block If, examine what follows the Then keyword. Wenn etwas anderes als ein Kommentar nach Then in derselben Zeile angezeigt wird, wird die Anweisung als einzeilige If-Anweisung behandelt.If anything other than a comment appears after Then on the same line, the statement is treated as a single-line If statement.

Die Klauseln Else und ElseIf sind optional.The Else and ElseIf clauses are both optional. Es können beliebige viele ElseIf-Klauseln in einem If-Block vorhanden sein, jedoch keine nach einer Else-Klausel.You can have as many ElseIf clauses as you want in a block If, but none can appear after an Else clause. If-Anweisungen im Blockformat können verschachtelt werden; das heißt, ineinander enthalten sein.Block If statements can be nested; that is, contained within one another.

Bei der Ausführung einer If-Anweisung im Blockformat (zweite Syntax), wird condition getestet.When executing a block If (second syntax), condition is tested. Wenn condition = True, werden die Anweisungen nach Then ausgeführt.If condition is True, the statements following Then are executed. Wenn condition = False, wird wiederum jede ElseIf-Bedingung (sofern vorhanden) ausgewertet.If condition is False, each ElseIf condition (if any) is evaluated in turn. Wenn eine True-Bedingung gefunden wird, werden die Anweisungen direkt nach der verknüpften Then-Anweisung ausgeführt.When a True condition is found, the statements immediately following the associated Then are executed. Wenn keine der ElseIf-Bedingungen True ist (oder wenn keine ElseIf-Klauseln vorhanden sind), werden die Anweisungen nach Else ausgeführt.If none of the ElseIf conditions are True (or if there are no ElseIf clauses), the statements following Else are executed. Nach dem Ausführen der Anweisungen nach Then oder Else wird die Ausführung bei der Anweisung nach End If fortgesetzt.After executing the statements following Then or Else, execution continues with the statement following End If.

Tipp

Select Case ist evtl. nützlicher bei der Auswertung eines einzelnen Ausdrucks mit verschiedenen möglichen Aktionen.Select Case may be more useful when evaluating a single expression that has several possible actions. Die Klausel TypeOf objectname Is objecttype kann jedoch nicht mit der Select Case-Anweisung verwendet werden.However, the TypeOf objectname Is objecttype clause can't be used with the Select Case statement.

Hinweis

TypeOf kann nicht in Verbindung mit anderen festen Datentypen als Objekt verwendet werden, z. B. Long, Integer usw.TypeOf cannot be used with hard data types such as Long, Integer, and so forth other than Object.

BeispielExample

In diesem Beispiel werden sowohl das Blockformat als auch das einzeilige Format der If...Then...Else-Anweisung aufgeführt.This example shows both the block and single-line forms of the If...Then...Else statement. Auch die Verwendung von If TypeOf...Then...Else wird veranschaulicht.It also illustrates the use of If TypeOf...Then...Else.

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.Use the If TypeOf construct to determine whether the Control passed into a procedure is a text box.

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 auchSee also

Support und FeedbackSupport and feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation?Have questions or feedback about Office VBA or this documentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.