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 2013 VBA Grundkurs

Select-Anweisung

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Statt schwierige If-Konstruktionen zu programmieren, lässt sich die Aufgabe meist auch mit einer Select-Anweisung erledigen. Dadurch wird der Code deutlich übersichtlicher und damit fehlerärmer.

Transkript

Sie sehen hier eine fertige Prozedur mit If, Else If, Else und End If, sowie ich das in vielen Programmen sehe. Und Sie ahnen es schon anhand des Namens AuswahlUnuebersichtlich, da gibt es was zu verbessern. Vielleicht gehen wir die erstmal durch, was sie macht. Ich deklariere eine Long-Variable. Und dieser weise ich einen per InputBox geholten Befehl zu. Vielleicht, machen wir den Teil erstmal zum Gucken. Das wird hier alles kommentiert und hier die InputBox. Es ist das, was Sie mit F5 jetzt sehen - ist dieses Eingabefenster. Da ist der Text und da ist der Standardwert. Was immer ich jetzt mache, es passiert nichts weiter, das war ja kommentiert. Also, die InputBox liefert den Inhalt dessen zurück, was der Benutzer eingegeben hat. Und weil das auch ein Text sein könnte, gibt es zusätzlich diese Value-Funktion, die jeden Text in eine Zahl umwandelt. Und wenn gar nichts geht, wenigstens in eine Null. Aber das heißt, es kommt wenigstens eine Long-Zahl an. Diesen Kommentar kann ich wieder aufheben. Bisher hatte ich ja kommentiert. Da ist das Gegenstück, hier die Kommentierung aufheben. Wenn ich die Zahl gekriegt habe, prüfe ich, ob die - 0 ist. Und schreibe das in das Direktfenster. Oder sie ist vielleicht 1, oder 3, oder 9, oder 15, relativ willkürlich jetzt. Dann vermerke ich das ebenfalls. Vielleicht liegt sie auch zwischen 20 und 30. Dann schreibe ich das in das Direktfenster und muss direkt dazu sagen: zwischen 20 und 30. Also, nicht die inklusive. Es könnte auch sein, dass die Zahl über 100 ist. Das sind jetzt nur ein Paar beliebige Beispiele, die dann jeweils einen unterschiedlichen Text erzeugen. Also, probieren wir einfach mal, F5. Ich denke mir eine beliebige Zahl aus, 123 und nach dem OK steht hier unten: es ist größer als 100. Neuer Versuch, F5, ich denke mir die Zahl 5 aus und nach dem OK ist sie nirgends in dieser Liste drin gewesen. 1, 3, 9, 15, nicht zwischen 20-30, also geht es in den Else-Bereich. Soweit, so funktionierend, allerdings nicht übersichtlich. Und deswegen möchte ich Ihnen zeigen, wie Sie das mit einem Select Case viel viel besser schreiben können. Also, das unten können wir erstmal wegmachen. Es gibt eine zweite Prozedur, Sub AuswahlBesser. Und Sie sehen schon, ich übernehme gar nichts von da oben. Das lohnt sich nicht. Na Ok, es lohnt sich ein ganz kleines Stückchen. Das hier, ist das einzige, was von oben übrig bleiben wird. Ich fange direkt mit einem Select Case an. Weil hinter Select Case die Variable steht. Und die Variable wird komplett ersetzt durch eine Funktion, die den Inhalt liefert. Das hatte ich schon mal erwähnt. Sie können ein Wert auch durch die Funktion ersetzen, die diesen Wert liefert. Das nutzt sich hier. Und damit die Form gewahrt ist, schreibe ich schon End Select. Jetzt kann ich mir die einzelnen Fälle angucken. z.B. Case 0, wenn der Wert, der da oben steht, 0 ist. Doppelpunkt, da schreibe ich dann in der gleichen Zeile weiter. Und ich nehme sogar die Tab-Taste zweimal, damit es ein bisschen übersichtlicher wird. Ich mache es sogar ein drittes Mal, das ist dann genug Abstand. Debug.Print und dann: "Das ist eine Null". Und damit ich ein bisschen Schreibarbeit spare, kann ich mir das sogar kopieren. Denn ich habe ganz viele Fälle noch hintereinander: 1, 3, 9 und 15. Da muss ich jetzt ein bisschen die Tabs wegnehmen. Und den Text kann ich mir von da oben holen. Also, das ersetzt diesen hier. Und so geht es jetzt weiter. Ich gucke mir an, wie die Bedingung oben lautet. Das ist tatsächlich schneller geschrieben, als von oben runterkopiert. Also, wenn die Zahl 21 To 29 ist... Achtung: inklusive. ...dann ein Debug.Print: "Die Zahl liegt zwischen 20 und 30". Da es eine Long-Zahl ist, kann sie nur ganzzahlig sein. Von daher ist es ungefährlich, dass ich nicht "größer 20" frage, sondern direkt mit 21 beginne. Ich mache mal hier mit der Tab-Taste schön einheitlich. Und schließlich muss ich prüfen, ob die Zahl größer 100 ist. Mit größer, kleiner, ungleich vergleichen. Also, sobald Sie Vergleichsoperatoren drin haben, müssen Sie beim Select Case dieses Schlüsselwort Is nehmen. Und dann dürfen Sie schreiben: Is größer 100, Tab, Tab und Debug.Print: "Die Zahl ist größer als 100". Und schließlich noch den letzten Fall, die Reste, so zu sagen. Das ist ein ausdrückliches Case Else. Und das hole ich mir jetzt wieder von da oben, das geht schneller. Also, mit Tab an die Stelle eingerückt und dann hier Debug.Print. Es sind oben: 1, 2, 3, 4, 5 Fälle. Und hier 1, 2, 3, 4, 5 berücksichtigt, ist also alles da. Ich kann sie hier einzeilig schreiben, das ginge übrigens oben auch. Wenn es denn sein muss, können Sie auch hier Doppelpunkt machen. Aber hier ist es bedeutend übersichtlicher, weil nämlich die Bedingungen viel viel kürzer sind. Gucken Sie sich mal an, was das für eine Monster-Bedingung ist, die Sie hier einfach 1, 3, 9, 15 schreiben können. Also, es macht genau das gleiche. Und sollte ich nochmal speichern. Aber es ist viel effektiver, wenn ich jetzt also hier die alten Ergebnisse nochmal rauslösche und hier mit F5 einmal laufen lassen. Sagen wir die Zahl 4. Ist eine andere Zahl, weil nirgends hier berücksichtigt, kann man wunderbar lesen. Das würde ich auch nutzen, dieses Select Case, wenn es um Message Boxe geht. Da tritt es auch gerne auf. Deswegen Sub MsgBoxEntscheidung. Das fängt ähnlich an: ein Select Case fragt direkt, nämlich nach der Funktion. Message Box: "Gefällt Ihnen das?" Haben Sie schon mal so gesehen, nicht besonders originell. Und hier steht jetzt vb. Nehmen wir ruhig alle drei: YesNoCancel. Es heißt, es gibt drei Möglichkeiten (End Select schon mal drunter), die hier passieren können. Die Message Box kann mit vbYes, mit vbNo und mit vbCancel antworten. Ja, und das prüfen wir jetzt mal. Case vbYes, und ich nehme wieder das ewige Debug.Print: "Ja". Oder Case vbNo, dann ist es mit Debug.Print ein "Nein". Schließlich ein Case vbCancel. Das sind die drei Fälle, die auftreten können. Ich mache oben wieder ein bisschen Abstand, das ist einfach lesefreundlicher. Und Sie sehen die Tabulator-Taste springt auch direkt an die gleiche Position. Und da schreibe ich "Abbrechen" hin. Und Sie werden sich jetzt wundern, weil ich eben so lauthals gesagt habe: es gibt diese drei Fälle. Jetzt kommt der vierte Fall. Der heißt: "Das darf nicht passieren". Oder genauer gesagt: "Fehler abc" oder eine Nummer, was immer Sie wollen. "Bitte wenden Sie sich an den Programmierer". Diese Zeile darf nie-nie-nie ausgeführt werden, außer Sie haben einen Programmierfehler gemacht. Und dann ist es extrem hilfreich, wenn der Anwender bei Ihnen anrufen kann und sagt: "Mhm, ich habe hier so eine komische Fehlermeldung gekriegt. Die sagt, ich soll Sie anrufen und die Nummer 17 322 sagen". Und dann gucken Sie an den Code und sagen: "Wieso 17 322? Das hätte nie kommen dürfen. Was ist da jetzt passiert?" Sie wissen also genau, wo der Code hingesprungen ist und dass er da nie hätte landen dürfen. Sie werden gleich sehen, das geht schneller, als man glaubt. Erstmal das Ganze speichern. Und einmal testen. Wenn Sie übrigens die Syntax vorher testen wollen, können Sie einmal auf Debuggen Kompilieren gehen. Dann kriegen Sie Syntaxfehler schon angezeigt. Das ist hier nicht der Fall. Also, einmal testen. Ich gehe auf Ja und da steht unten Ja. Und wenn Sie wollen, machen wir es nochmal. Ich gehe auf Abbrechen und da steht Abbrechen. Soweit alles super. Jetzt fragen Sie sich, wo hätte da der Fehler auftauchen können. Na, ganz banal, Sie haben sich hier vertan. Nehmen wir ruhig einen anderen, der hat auch drei. vbAbortRetryIgnore, im Deutschen: Abbrechen, Wiederholen, Ignorieren. Jetzt gucken Sie mal was passiert. Es wird ganz normal ausgeführt: "Gefällt Ihnen das?". Ach, ich gehe mal auf Ignorieren. Und da kommt die Meldung. Weil nämlich als Antwort auf diese Vorgabewerte natürlich auch weder vbYes, noch vbNo, noch vbCancel kommt. Es kommt übrigens vbAbort, auch wenn das Wort Abbrechen da gleich stand. Das heißt, Sie hätten sich verprogrammiert so zu sagen, irgendein vergessen oder wie hier völlig falsch gemacht. Also, vbYesNoCancel natürlich. Wenn die irgendwie nicht zu den Rückfragen, zu den Rückgabewerten passen, dann greift die Else-Entscheidung. Und da das beim Case, Select Case sehr einfach ist, kann ich dringend nur empfehlen immer das Else einzubauen. Auch dann wenn Sie überzeugt sind, dass es nicht vorkommen kann, um nicht zu sagen gerade dann. Aber insgesamt ist hoffentlich zu sehen, dass ein Select Case viel viel kürzer und vor allem übersichtlicher ist, als ein gleich funktionsfähiges If - Else - End If.

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!