Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!
Wer bisher mit VBA oder C# gearbeitet hat und zu VB wechseln möchte, sieht sich bei der Entwicklung von WPF-Anwendungen einigen Änderungen gegenüber. Dieser Artikel liefert die Grundlagen zur Programmierung von Bedingungen wie If…Then oder Select Case und von Schleifen wie For…Next, For…Each oder Do While. Zum Experimentieren mit den Beispielen nutzen wir das Tool LINQPad 5.
Wer von VBA kommt, wird wenig Probleme haben, sich in Visual Basic für .NET einzuarbeiten. Wer nur C# kennt oder sich daran gewöhnt hat, muss sich erst ein wenig einarbeiten. Hier kommen nämlich die wichtigsten Konstrukte bei der Programmierung von Methoden und Funktionen: Bedingungen und Schleifen. Die Beispiele dieses Artikels haben wir der Einfachheit halber wieder im Tool LINQPad5 ausprobiert, das wir im Artikel LINQPad: LINQ, C# und VB einfach ausprobieren bereits vorgestellt haben.
Einfaches If…Then
Eine einfache If…Then-Bedingung prüft, ob der angegebene Ausdruck wahr ist und führt dann die zwischen der If– und der End If-Zeile enthaltenen Anweisungen aus:
Dim intZahl As Integer intZahl = 10 If intZahl > 5 Then Debug.WriteLine("intZahl ist größer als 5") End If
Von C# kommend ist das eine Umstellung, denn auch hier fallen die geschweiften Klammern weg und die Semikola am Ende der Befehlszeilen. Auch ist es hier nicht mehr möglich, eine einfache Zeile einfach ohne geschweifte Klammern hinter der If-Zeile einzufügen. Es gibt aber auch unter VB eine vereinfachte Schreibweise für einfache Anweisungen. Hier lassen Sie dann einfach die Zeile End If weg und fügen die auszuführende Zeile einfach an die Bedingung an:
If intZahl > 5 Then Debug.WriteLine("intZahl ist größer als 5")
If…Then…Else-Bedingung
Nehmen wir noch einen Else-Zweig hinzu, um Anweisungen anzugeben, die bei Nichterfüllung der Bedingung ausgeführt werden sollen. Dann sieht die Bedingung wie folgt aus:
If intZahl > 5 Then Debug.WriteLine("intZahl ist größer als 5") Else Debug.WriteLine("intZahl ist nicht größer als 5") End If
Wenn der erste Teil der Bedingung hier nicht eintritt, wird auf jeden Fall der zweite Teil hinter dem Schlüsselwort Else ausgeführt. Sie können statt Else auch das Schlüsselwort ElseIf verwenden und eine zweite Bedingung angeben. Im folgenden Beispiel müssen wir allerdings beachten, dass im Falle von intZahl = 5 keiner der beiden Zweige ausgeführt wird:
If intZahl > 5 Then Debug.WriteLine("intZahl ist größer als 5") ElseIf intZahl < 5 Then Debug.WriteLine("intZahl ist nicht größer als 5") End If
Für diesen Fall können wir aber auch noch einen finalen Else-Zweig anhängen, der auf jeden Fall ausgeführt wird. Der Else-Zweig kann allerdings nur als letzte Bedingung verwendet werden:
If intZahl > 5 Then Debug.WriteLine("intZahl ist größer als 5") ElseIf intZahl < 5 Then Debug.WriteLine("intZahl ist nicht größer als 5") Else Debug.WriteLine("Keine der angegebenen Bedinungen traf zu.") End If
Sie können mehrere ElseIf-Zweige einsetzen. Das ist ein großer Unterschied zu C#, denn dort gibt es gar kein ElseIf (nur eine vereinfachte Schreibweise für verschachtelte If-Bedingungen mit Else If). Hier müssen Sie für solche Fälle mit verschachtelten Bedingungen arbeiten, wenn Sie If…Then nutzen wollen.
Verschachtelte If…Then-Bedingung
If…Then-Bedingungen lassen sich ineinander verschachteln:
If intZahl > 5 Then Debug.WriteLine("intZahl ist größer als 5") ElseIf If intZahl > 3 Then Debug.WriteLine("intZahl ist größer als 3 und kleiner als 5") Else Debug.WriteLine("intZahl ist kleiner gleich 3") End If End If
Verwendung von If…Then in einer Zeile mit IIf
Die von VBA bekannte Funktion IIf können Sie unter C# nicht verwenden, es gibt dort eine alternative Schreibweise mit gleicher Funktion. Unter VB jedoch steht IIf wie unter VBA zur Verfügung. Dabei erwartet die Funktion drei Parameter:
- Bedingung
- Wert, wenn die Bedingung wahr ist
- Wert, wenn die Bedingung falsch ist
Die obige If…Then…Else-Bedingung würde in einer Zeile wie folgt aussehen:
IIf(intZahl>5, "Zahl ist größer als 5", "Zahl ist kleiner gleich 5")
Hinweis: Wenn Sie IIf und anderen Visual Basic-Funktionen in LINQPad testen wollen, erhalten Sie normalerweise den Fehler aus Bild 1.
Bild 1: Fehler beim Ausführen der Funktion IIf
Um dies zu verhindern, müssen Sie den Namespace Microsoft.VisualBasic hinzufügen.