Visual Basic: Bedingungen und Schleifen

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

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.

Fehler beim Ausführen der Funktion IIf

Bild 1: Fehler beim Ausführen der Funktion IIf

Um dies zu verhindern, müssen Sie den Namespace Microsoft.VisualBasic hinzufügen.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar