Excel: Eigene Funktionen mit VBA erstellen

Schleifen: Do ''...'' Loop

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Um eine Bedingung so lange zu überprüfen, bis ein bestimmtes Ereignis eintritt, eignet sich die "Do ... Loop"-Schleife. Erfahren Sie, wann Sie besser eine solche Schleife statt einer "For ... Next"-Schleife verwenden.
07:43

Transkript

Wenn Sie etwas in der VBA-Literatur suchen, heißt in Büchern, Videotrainings, Zeitschriften, Artikeln, im Internet und so weiter, dann werden Sie neben der For-Schleife hier For ... Next, auf eine andere Schleifenform stoßen, die sogenannte Loop oder Do ... Loop-Schleife, oder sie hat verschiedene Namen, sie wird auch oft die Bedingung-Schleife genannt, weil ich dort verschiedene Bedingungen abrufen kann. Die For ... Next-Schleife halte ich für die wichtigere, weil hier gebe ich den Anfang und das Ende an, das heißt, ich weiß bei der For ... Next-Schleife schon genau, wie oft die Schleife durchlaufen muss, während bei der Do ... Loop-Schleife innerhalb der Schleife eine Bedingung überprüft wird. Ich zeige an einem kleinen Beispiel, wieso eine Bedingung-Schleife, wieso eine Do ... Loop-Schleife funktioniert. Dazu schreibe ich Sub, ein klein bisschen albern, eine Gehaltserhöhung, sub Gehaltserhöhung. Das ich hier ein ö verwendet habe, ist in VBA durchaus zulässig. Dieses Programm würde auch in USA, in Frankreich, in Großbritannien laufen. Wenn Sie Angst haben, wenn Sie sagen, meine andere Entwicklungsumgebungen, dort darf ich das auch nicht, können Sie es natürlich vermeiden, können Sie es durch ein oe schreiben, aber ich Deutscher, ich deutschsprachiger Mensch, ich verwende es mal, hier läuft es, sub Gehaltserhöhung. Ich frage meinen Mitarbeitern, messagebox, "Willst du mehr Gehalt?" Fragezeichen, ok. Ich lasse es starten und bekomme ein kleines Meldungsfenster mit einer Ok-Schlatfläche. Das genügt mir natürlich nicht, er soll natürlich auf Ja oder Nein klicken. Das heißt, Komma, ich mache hier ein vbYesNo. Jetzt haben wir zwei Schaltflächen, die fragen Ja oder Nein. Ok! Das Ergebnis, ob er oder sie auf Ja oder Nein klickt, fange ich einer Variablen ab, und dazu muss ich wissen, dass die Messagebox ein Messagebox-Result oder genauer ein Konstante vbMessageboxResult mir zurückgibt, und diese Konstante, steht in der Hilfe, dort können Sie es lesen, diese Konstante ist eine Zahl, das heißt, diese Variable, schreibe ich hier vorne dran, diese Variable ist ganz genau eine integer-Zahl. Deshalb schreibe ich hier intantwort = und Achtung, würde ich es so schreiben, würde er schimpfen, weil er sagt: Jetzt wird die Messagebox zu einer Funktion, jetzt muss ich bei der Messagebox Klammer auf, Klammer zu schreiben, damit ich diese Antwort übergeben kann, diesen Wert an die Variable intantwort übergeben kann. Ich deklariere sauber die Variable, dim intantwort, vom Typ integer. So steht es in der Hilfe, ist eine Zahl bis insgesamt 32000. Ok, starten wir das Ganze nochmal. Es passiert nichts Neues. Das Ergebnis steht jetzt in dieser Variable drin. So das Programm, jetzt kommt unsere Schleife im Spiel, das Programm soll so lange durchlaufen, bis der Anwender, die Anwenderin irgendwann auf Nein drückt. Da ich natürlich nicht weiß, wie oft wir da auf Ja, Ja, Ja, Ja, drücken, kann ich natürlich nicht mit einer For ... Next-Schleife arbeiten, sondern muss mir etwas anderes einfallen lassen. Ich muss eine andere Schleifenform verwenden, nämlich eine Do ... Loop-Schleife. Ich schreibe hier do, rücke das ein, loop und Achtung, würde ich das so schreiben, hätte ich eine Endlosschleife. Merken Sie sich, falls Sie so etwas mal programmieren, mit der Tastenkombination Strg + Unterbrechen, Strg + Unterbrechen oder Strg + Pause, kommt man aus der Endlosschleife raus. Damit unterbricht er das Ganze. Natürlich starte ich jetzt noch nicht, sondern ich weiß, nach dem Do ... Loop kommt noch: Do ... Loop mach so lange bis until, until Anwender oder Anwenderin hat auf Nein gedrückt. Das heisst, mach so lange bis meine Antwort, intantwort, = no. Achtung, no kennt der so natürlich nicht, no, schaue ich in der Hilfe nach, das schenke ich mir, weil ich das weiß, no ist eine Konstante, die wird in VBA geschrieben mit dem Schlüsselwort vbNo, Virtual Basic no. Dahinter steckt irgendeine Zahl, die mich jetzt erstmal nicht interessiert. So lange bleibt der in der Schleife, bis die Schaltfläche no gedrückt wird oder genauer, bis die Messagebox als Ergebnis an die Variable intantwort den Wert vbno übergibt. Danach beenden wir das lustige kleines Programm mit einem Messagebox und loben ihn oder sie natürlich, "Braver Mitarbeiter", "Brave Mitarbeiterin". Das reicht mir schon. Mir geht es hier nur um die Do ... Loop- Schleifen, um die Bedingung-Schleifen. Die Bedingung sehen Sie hier hinter dem Loop. Die Bedingung steht hier unten, until. Das ist eine sogenannte fußgesteuerte Schleife, das heißt, er wird hier mindestens einmal reinfließen und jetzt entscheiden, muss ich nochmal hochspringen, und nochmal abarbeiten oder kann ich hier aus der Schleife rausgehen und weitermachen. Es gibt auch sogenannte kopfgesteuerte Schleifen. Ich hätte das Ganze auch hier oben schreiben können. So, Do until . Dies sind abweisenden oder kopfgesteuerten Schleifen, das heißt, hier könnte es sein, dass er gar nicht in die Schleife reingeht. Nein, ich möchte ganz deutlich, dass er mindestens einmal reinfließt, also hier runter, Do until, intanwort ist vbNo. Alternative: Sie werden in der Literatur häufig Do Loop while, heißt, bleibe so lange in der Schleife solange die intantwort ich könnte natürlich jetzt schreiben, ist nicht, ungleich vbNo, oder = vbYes, natürlich nur das eine oder das andere, beides zusammen geht nicht, ist klar. Meistens kann ich until durch ein while ersetzen, muss ich nur den Operator umdrehen. Statt ein gleich, ein ungleich, statt einem großen, einem kleinen Gleich und so weiter drehen und könnte die Schleife eben anders bauen, je nachdem, wie ich denke. Übrigens eine ältere Variante ist statt Du ... Loop ein While ... Wend zu verwenden. Ab und zu finde ich auch diese Variante noch, wobei die etwas komplexerer, flexiblerer Bedingung-Schleife-Form ist diese Do ... Loop-Schleife, die ich Ihnen hergezeigt habe, und ich möchte Ihnen nicht vorenthalten, wie der ganze Scherz aussieht. Wenn ich das Ganze jetzt starte, dann fragt er: Willst du mehr Gehalt? Selbstverständlich will ich! Man kann nie genug Geld haben! Ja, Ja, Ja, Ja, Ja, Ja. Irgendwann bin ich müde mit auf Ja klicken, klicke ich genervt auf ein Nein. Jetzt fließt er aus der Schleife raus und meldet, ich bin ein braver Mitarbeiter. Wunderbar! Sie sehen hier Do ... Loop. Ich denke, es ist auch klar geworden der Unterschied zu dem For ... Next Do ... Loop wird genau dann verwendet, wenn ich innerhalb der Schleife noch nicht weiß, wie oft sie verwendet wird. Und ganz wichtig, häufig in VBA brauche ich die sogenannte For ... Next-Schleife, weil meistens weiß ich eben, wie oft die Schleife durchlaufen werden soll.

Excel: Eigene Funktionen mit VBA erstellen

Schreiben Sie Ihre eigenen Excel-Funktionen. Als erfahrener Excel-Anwender lernen Sie, wie Sie mithilfe von VBA Berechnungen mittels selbst erstellter Funktionen automatisieren.

3 Std. 4 min (33 Videos)
Derzeit sind keine Feedbacks vorhanden...
Hersteller:
Exklusiv für Abo-Kunden
Erscheinungsdatum:21.01.2015

Im Training wird Excel 2013 benutzt. Die Vorgehensweisen sind aber für alle Windows-Versionen von Excel identisch und leicht übertragbar.

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!