Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Excel 2016 VBA Grundkurs

Verschiedene Varianten für If

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Der Kern so ziemlich jeder Programmierung besteht darin, Bedingungen zu überprüfen. Typischerweise geschieht dies mit einem If-Befehl. Aber selbst dieser scheinbar so einfache Befehl bietet noch jede Menge Potential, um den Code zu verbessern.

Transkript

Der häufigste Befehl in jeder Programmierung ist sicherlich das "if". Und auch wenn es sehr einfach scheint und wer es schon hier und da schon mal benutzt hat, möchte ich Ihnen noch einmal komplett zeigen, welche Möglichkeiten da drin stecken. Ich fange mit einer einfachen Prozedur an, die nenne ich mal "Meine Entscheidung()". Und die wird eine völlig fiktive Entscheidung prüfen. Dazu muss ich mir den Wert erstmal merken. Und ich weiß jetzt schon, dass die Funktion, die ich gleich benutze, eine Zahl zurückgibt. Also kann ich mir jetzt mit "dim" eine Integer-Zahl nämlich merken. "dim Entscheidung as Integer" und dann kann ich "intEntscheidung" gleich die Funktion schreiben. Diese Funktion haben Sie schon mal gesehen, aber als Sub Procedure, nämlich die MessageBox. Die gibt es nicht nur in der Sub-Version, also als Unterprogramm, wo ich jetzt ein Leerzeichen schreiben würde, sondern, da ich das hinter einem Gleichheitszeichen benutze, auch als Function. Sie wird also einen Wert zurückgeben. Und ich frage jetzt völlig beliebig, Sind Sie dafür? Wofür auch immer. Und das ist nur dann sinnvoll, wenn ich als zweiten Parameter hier mehr als eine Schaltfläche habe. Normalerweise hätten Sie jetzt "vbOKOnly", nämlich nur die OK-Schaltfläche. Und jetzt mache ich einen "vbYesNo". Das heißt, es gibt die zwei Schaltflächen Ja und Nein. Und damit wir es gleich komplett haben, im Title steht meine übliche Konstante, die sagt, wer schuld ist sozusagen. Das können wir ruhig schon aufrufen, aber ich will auch direkt sehen, welcher Wert rausgekommen ist. Also "debug.Print intEntscheidung", damit Sie gleich sehen, dass da tatsächlich eine Zahl rauskommt. Die normale MessageBox können Sie ohne solche Parameter nutzen, dann wird das hier nur eine Meldung sein. Aber sobald Sie eine Entscheidung, nämlich mit mehreren Schaltflächen zulassen, dann sollten Sie die auch in dieser function-Version benutzen. Das bedeutet, kein Leerzeichen bei den Parametern, sondern eine Klammer. Und da es eine Function ist, muss davor auch stehen, an wen oder an welche Variable der Wert zurüchgegeben wird. Und dann können wir das laufen lassen mit F5, dann sehen Sie, hier ist die Frage. Ja/Nein,"vbYesNo", die Schaltflächen, und wenn ich auf Ja gehe, kommt hier unten eine sechs raus. Ich kann das direkt nochmal aufrufen mit F5 und dann kriege ich ein Nein. Und das ist eine sieben. Und das kann ich, - jetzt erst kommt nämlich das "If" - das kann ich jetzt prüfen und untersuchen. Ich nehme also hier das "debug.Print" mal mit einem Kommentar raus. Und jetzt kann ich prüfen, ob "If intEntscheidung" gleich und Sie würden wahrscheinlich jetzt eine sechs oder eine sieben schreiben. Das geht technisch. Aber da müssten Sie immer wissen, ob eine sechs ein Yes, beziehungsweise ein Ja, oder Nein ist. Und dafür gibt es genau die gleichen Konstanten. So wie hier ein "vbYesNo" existiert, das sagt, welche Schaltflächen eingesetzt werden, gibt es ein "vbYes". Das enthält zwar die Zahl "6", aber dadurch ist es lesbar. Und nebenbei, falls sich irgendwann mal diese Konstante, der Wert ändern sollte, funktioniert der Code weiterhin. dann schreibe ich bei jedem "If" direkt die Struktur komplett, also ein "Else" und ein "End If". Und wenn Sie darauf achten, Ich schreibe "EndIf" als ein Wort. Das ist das Einzige, was ich so schreiben darf, und es trotzdem in zwei Wörter zerlegt wird. Das ist Bequemlichkeit. Bei den anderen, "End Sub "oder so was, funktioniert das nicht, aber "If", "Else", End If" kann man mal eben so schnell runterschreiben. Und wenn die Entscheidung "Yes" ist, dann gebe ich nur einfach "debug.Print" aus. Und da steht das "Ja", und in anderen Fall, nur damit wir es prüfen können, ein "Nein". Dann sollte ich unten ein bisschen Platz machen und aufräumen. Und entsprechend kann ich jetzt aber nach dem Speichern, mit F5 starten. Und wenn ich jetzt hier auf Ja klicke, dann wird das "Ja" ausgegeben, und mit F5, wenn ich auf Nein klicke, gibt es ein "Nein". Soweit funktioniert alles. Und das ist die durchaus übliche Methode, das zu schreiben, das kann jetzt eigentlich auch wieder weg. Es ist aber nicht die kürzeste. Und so sehr ich langen, lesbaren Code zu schätzen weiß, so überflüssig ist überlanger Code. Also ich nenne den mal durchaus "Lang" und kann das jetzt kopieren. Ich schiebe das mal da drunter. Und werde die obere Version verändern. Das wird jetzt heißen "Mittel". Und zwar basiert es darauf, dass hier eine Variable drinsteckt, mit einem Datentyp. Das ist gut zu wissen. Die Variable wird ein einziges Mal gefüllt und ein einziges Mal verglichen. Tatsächl1ich können Sie Functions, immer so benutzen, als wären sie ihr eigenes Ergebnis. Das heißt, anstatt die Variable zu nutzen, können Sie auch die Function an der Stelle reinschreiben. Also hier rausschneiden, und da reinschieben. Und damit sind diese beiden Zeilen völlig überflüssig. Die Variable ist weggefallen, die stand an dieser Stelle. und wird durch die Function selber ersetzt. Sie sehen schon, der Code wird deutlich kürzer. Knapp halb so lange. Sollte er natürlich auch noch funktionieren, also, wie bisher auch mit F5. Ich gehe einmal auf Ja, dann steht unten ein "Ja", mit F5, ich gehe auf Nein, und da steht ein "Nein". Funktioniert wunderbar, ist kürzer. Und nur dann sinnvoll, wenn Sie diese Variable nicht irgendwo ein zweites Mal prüfen. Dann müssen Sie die Variable benutzen, sonst würden Sie nämlich eine zweite Messagebox erzeugen. und dann muss der Benutzer die gleiche Frage zweimal beantworten. Das wird er nicht gerne machen, Dafü gibt es Variablen, die sich das zwischendurch merken. Es geht sogar noch kürzer. Noch viel kürzer. Deswegen werde ich jetzt eine neue Prozedur schreiben, die heißt "Sub MeineEntscheidung" ich nenne die schon mal direkt "SehrKurz". Das ist so kurz, dass es schon unübersichtlich werden kann. Ich fange direct mit dem "debug.Print" an. Und jetzt würde ich Ja oder Nein schreiben, je nachdem, was gewünscht ist. Und das ist abhängig von einer Bedingung, und ich nehme nicht die Bedingung als Operator, hier dieses "If", sondern ich nehme die "IIf"-Function. Also "IIf ", Klammer auf, Jetzt kommt die Prüfung. "Expression", da steht die Bedingung drin, - da kann ich jetzt von hier kopieren. Ignorieren Sie, dass es da oben rot wird, das ist ein Syntaxfehler, weil ich noch nicht fertig bin. STRG + "C", STRG + "V", das ist die komplette Prüfung - Komma, TruePart bedeutet, - also was hier in Quick Info schon zu lesen ist - was passiert, wenn die Bedingung wahr ist. Also wenn das Ergebnis ein "vbYes" war, dann schreibe ich hier ein "Ja", Komma, sonst ein "Nein", Klammer zu. Das war schon alles. Ich heb den Code, der hier zwei, vier, sechs, sieben Zeilen braucht, in einer einzigen Zeile untergebracht. Und das wäre natürlich schön, wenn er immer noch funktioniert. Also F5, ein Ja erzeugt wieder ein "Ja" unten, und eine Nein-Auswahl schreibt hier ein "Nein" rein. Also es geht. Das braucht gute Nerven, wenn man so was macht, das ist mehrfach geschachtelt. Hier ist eine Function, die in einer Bedingung ausgewertet wird, und mit dem "IIf" dann das eigentliche Ergebnis erzeugt. Häufig steht da noch Text davor, also zum Beispiel so was wie hier. Und das wird dann nur verkettet. Zum Beispiel wenn Sie, die Anzahl von irgendwas im Singular oder im Plural nennen wollen, dann ist so was sinnvoll. Wenn Ihnen das zu kurz, zu unleserlich ist, oder die Zeile zu lang wird, - das kann nämlich auch passieren - dann würde ich darauf verzichten, es lieber mehrzeilig zu schreiben. Da könnte Ihnen wieder das passieren, was ich gerne zu Tode sparen nenne. Nämlich dass Sie an der Stelle so kompakt schreiben, dass Sie Fehler drin haben, die Fehlersuche länger dauert, als Sie vorher gespart haben.

Excel 2016 VBA Grundkurs

Lassen Sie sich systematisch in die Excel-Programmierung mit Visual Basic for Applications (VBA) einführen.

7 Std. 25 min (66 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Exklusiv für Abo-Kunden
Erscheinungsdatum:30.08.2016

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!