Excel 2013 VBA Grundkurs

Entscheidungen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Jeder Programmcode besteht zu großen Teilen aus Entscheidungen. Dieser Überblick erklärt, wofür welcher Befehl am besten geeignet ist und wie er grundsätzlich aussieht.

Transkript

Jede Programmiersprache muss Entscheidungen fällen. Das ist für VBA in Excel 2013 auch nicht anders. Und das bedeutet, innerhalb des Programmes gibt es Verzweigungen. Und zwar, entweder einzeln: eine einfache Entscheidung. Die wird typischerweise mit dem Befehl If oder später Select Case gemacht. Oder eine wiederholte Entscheidung. Das ist eine Schleife. Die ist typischerweise For/Next oder Do/Loop. Hier geht es zuerst um die einzelne Programmverzweigung. Das ist normalerweise das Schlüsselwort If. Hinter dem If steht eine einfache Bedingung und darunter ein Block mit eventuell vielen Zeilen dazwischen. Deswegen nennt sich das Ganze - Block If. Und das sieht typischerweise so aus. If, hier steht die Bedingung, Then, statt des Kommentars stehen beliebig viele Aktionen, die auszuführen sind. Und das End If begrenzt diesen Block. Das ist der Normalfall. Es gibt aber auch den Sonderfall noch. Nämlich eine einzeilige If-Prozedur ohne ein End If. Und einen zweiten Sonderfall, eine einzeilige IIf-Funktion. Erstens, es ist eine Funktion. Und zweitens, es schreibt sich wirklich mit Doppel-I. Und das sieht so aus. Das einzeilige If schreibt einfach hintereinander weg: If, Bedingung, Then. Und die einzige Aktion, die dann folgen kann, hier hinter. Da kann ich nicht kommentieren, sonst würde der Compiler das End If suchen, deswegen steht hier irgendwas. Und das ist schon ein Nachteil, dass es schön eine Zeile, statt mindestens drei. Aber man sucht automatisch das End If und man kann auch nur genau eine Zeile dazwischen schreiben. Die IIf-Funktion ist praktisch, wenn Sie unterschiedliche Werte zurückgeben wollen. Wenn diese Bedingung wahr ist, wird der erste Wert zurückgegeben. Das muss keine Zeichenkette, das kann auch eine Zahl sein. Andernfalls, wird der zweite Wert zurückgegeben. Also, in diesem Fall das b. Und in jedem Fall kriegt das x einen Wert. Der Hacken an der Funktion ist: die ist so schön, kurz und knackig und einzeilig. Aber wenn hier z.B. Berechnungen drin stehen, werden beide ausgeführt, und abhängig von dem, was hier ermittelt wird, nur eine zurückgegeben. Beide ausgeführt heißt aber, wenn z.B. If intI gleich 0, x durch 0 oder x mal 0 ausgeführt wird, dann darf man x durch 0 nicht rechnen, das ist ein Laufzeitfehler. Aber weil es versehentlich hier mit 0 geprüft wurde und dann zum richtigen Ergebnis käme, ist es vorher trotzdem ausgeführt. Also, riskant die IIf-Funktion führt beide Teile aus, auch wenn nur einer zurückgegeben wird. Das ist ein beliebter Kandidat für Laufzeitfehler. Deswegen würde ich immer empfehlen beide zu vermeiden. Also, sowohl das einzeilige If, als auch das einzeilige IIf als Funktion. Wenn Sie ein If benutzen, sind grundsätzlich mehrere Bedingungen möglich. Die müssen Sie dann verknüpfen mit logischen Operatoren. Insbesondere, mit And und Or, zusätzlich mit einem Not. Und dann kommen die, die so selten sind, dass ich sie in den letzten 30 Jahren nie benutzt habe und kaum weiß, wie sie heißen. Ein XOr - das ist nicht ganz so selten, habe ich aber auch wirklich noch nie gebraucht. Und dann, vor allem, Implikation, Äquivalent. Da muss man schlicht in der Tabelle nachgucken, was die wann warum machen. Habe ich wirklich noch nie benötigt. Das normale Or sieht beispielhaft so aus: If, erste Bedingung, Or, zweite Bedingung, Then. Und wenigstens eine der beiden Bedingungen muss wahr sein, damit das Ergebnis wahr wird und also der Code hier ausgeführt wird. Das ist übrigens das, was das XOr anders macht, das ist ein Exklusiv-Oder. Es darf also höchstens eine von den beiden Bedingungen wahr sein. Nicht, wie im Normalfall, wenigstens eine muss wahr sein. Das And sieht entsprechend aus. Wenn Sie hier größer 99, oder kleiner 10 untersuchen, dann ist das genaue Gegenstück dazu: größer 10 und gleichzeitig kleiner 99. Sie müssen also, wenn Sie vom Oder auf den Und wechseln, typischerweise die Vorzeichenrichtung in den Vergleichsoperatoren ändern. Aber unabhängig davon, Sie können beliebig viele And, Or miteinander verknüpfen. And hat Vorrang, Sie müssen also im Zweifelsfall auch mal Klammern setzen. Wenn die Bedingungen alle erledigt sind, können Sie, so zu sagen, den Rest abarbeiten. Das ist dann der Else-Fall, alles Andere. Der ist zuständig für alles, was nicht schon irgendwie erledigt wurde und hat daher keine eigene Bedingung. Er sieht klassischerweise so aus: If, erste Bedingung, Then - der erste Code. Else - alles, was hier nicht erfasst wurde (ist z.B. alles kleiner gleich 99), würde hier ausgeführt. Wenn Sie noch eine zweite Bedingung haben, das kann ja sein, dann gibt es ausdrücklich ein ElseIf, ein einziges Wort. Und jedes ElseIf, was vorkommt, das können mehrere sein, hat eine eigene Bedingung dahinter stehen. Und deren erster Treffer gewinnt. Also, in diesem Fall, wenn intI größer 99 ist, wird das ausgeführt. Wenn intI kleiner 10 ist - das. Und in allen anderen Fällen - dieses. Da steckt ein bisschen Risiko drin, denn der erste Treffer gewinnt. Das bedeutet, lassen Sie dieses intI einfach mal 200 sein. Wenn 200 größer als 99, dann: "Uhu, das ist wahr". Also, springt er sofort hierhin. Und ein "größer 150" wird nicht mehr geprüft, weil es vorher schon "größer 99" war. Also, syntaktisch alles in Ordnung, die Schreibweise ist richtig, aber die Reihenfolge taugt leider nichts. Auch da muss man sehr aufpassen, deswegen im Zweifelsfall ein ElseIf kann schon sehr unübersichtlich werden. Wenn es sich vermeiden lässt, muss nicht unbedingt sein. Die bessere Lösung dazu ist ein Select Case. Das ist wie ein ElseIf, ElseIf, ElseIf, ElseIf, nur viel leichter zu lesen und vor allem auch zu schreiben. Es ist also übersichtlicher, als ein If mit vielen ElseIf’s. Die Schreibweise sähe so aus: Select Case ist das Schlüsselwort. Hier steht einmalig die Variable. Und dann können Sie entweder mit Case direkt einen Wert nennen. Oder typischerweise, um das Beispiel von eben aufzugreifen, mit dem Schlüsselwort Is vergleichen. Hier könnte ja komplizierteres stehen, als nur eine Variable. Deswegen gibt es ein eigenes Schlüsselwort. Wenn also das Ergebnis größer als 99 ist, wird das ausgeführt. Ist es kleiner als 10, wird das ausgeführt. Und ansonsten - das. Das kann man noch ein bisschen übersichtlicher schreiben, nämlich mit einer Doppelpunktschreibweise. Die ist übrigens, überall in VBA erlaubt und zeigt nur anders diese beiden Zeilen hintereinander stehen. Das bedeutet, auch wenn sich das hier gerade um Kommentar handelt, auch der richtige Code würde für Ihre Augen in einer Zeile stehen. Und dem Compiler ist es wegen des Doppelpunkts klar, dass es sich hier um zwei Zeilen handelt. Ist also deutlich kompakter auch. Die Abbildung von komplizierten Verknüpfungen ist viel einfacher, als mit dem If. Und dadurch können Sie das sehr kompakt abbilden. Beispielsweise, so: Select Case intI, wie vorher auch schon gezeigt. Und jetzt würde ich prüfen, If intI gleich 1 Or intI gleich 5 Or intI gleich 10. Oder kürzer: Case 1, Komma 5, Komma 10. Sie können einfach die gewünschten Vergleichswerte so hintereinander nennen. Sie können anstatt zu schreiben: If intI größer gleich 15 And intI kleiner gleich 20, direkt schreiben: Case 15 To 20. Alle Werte von 15 bis 20, inklusive. Oder Sie können das auch mischen. Für den Fall, das intI 30 ist, oder zwischen 100 und 200, inklusive, oder größer 300, dann passiert das. So kompakt kriegen Sie das mit einem If und den ganzen logischen Verknüpfungen (größer, kleiner, Or und And) nie hin. Viel einfach zu prüfen, als ohne. Daher im Normalfall ein If. If, Else, End If typischerweise. Wenn es ein bisschen komplizierter wird, noch einmal ein ElseIf, als ein einziges Schlüsselwort. Und danach ganz schnell ausweichen auf ein Select Case, weil das viel kompakter und viel übersichtlicher zu schreiben ist.

Excel 2013 VBA Grundkurs

Holen Sie aus Excel 2013 mit der integrierten Programmiersprache VBA auch das letzte Quäntchen an Funktion heraus und lassen Sie sich dazu zeigen, was alles möglich ist.

6 Std. 18 min (63 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!