XL: Verwenden von Schleifenstrukturen in Visual Basic für Applikationen

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 141762 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
141762 XL: How to Use Looping Structures in Visual Basic for Applications
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Wenn Sie Makros oder Anwendungen in Microsoft Visual Basic für Applikationen erstellen, ist es oftmals erforderlich, bestimmte Codeabschnitte mehrmals auszuführen. Visual Basic für Applikationen bietet mehrere Möglichkeiten zum Wiederholen von Codeabschnitten.

Dieser Artikel enthält Beispielcode, der die Verwendung von verschiedenen, in Visual Basic für Applikationen verfügbaren Schleifenstrukturen und Algorithmen veranschaulicht.

Weitere Informationen

Die Verwendung der hier aufgeführten Informationen, Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionalität sowie ohne Anspruch auf Support zur Verfügung. Die zur Verfügung gestellten Makro- und Programmierungsbeispiele sollen lediglich exemplarisch die Funktionsweise des Beispiels aufzeigen. Die Spezialisten von Microsoft Product Support Services können bei der Erläuterung der Funktionalität bestimmter Prozeduren helfen, jedoch werden sie diese Beispiele nicht in Bezug auf eine erweiterte Funktionalität verändern, noch werden sie Prozeduren entwickeln, die auf Ihre besonderen Bedürfnisse zugeschnitten sind. Bei der Entscheidung für eine der Schleifenstrukturen sollten Sie u. a. die folgenden Überlegungen berücksichtigen:
Wissen Sie genau, wie oft der Code tatsächlich durchlaufen werden soll?

Wenn ja, wie oft?

Wenn nicht, gibt es eine bestimmte Bedingung, die das Makro dazu veranlasst, die Schleife zu verlassen? Wenn es sich um eine bedingte Schleife handelt, möchte Sie die Bedingung vor oder nach dem Ausführen des Codes prüfen?

Visual Basic-Beispielprozeduren

Die folgenden Beispiele veranschaulichen die verschiedenen Schleifenstrukturen, die in Visual Basic für Applikationen verfügbar sind. Sofern nichts anderes angegeben ist, wird in den Beispielen angenommen, dass eine Zelle oder ein Zellbereich ausgewählt ist. Beachten Sie außerdem die folgenden Hinweise:
  • In den Beispielen wird für die Anzeige von Informationen die Meldungsfeldfunktion (MsgBox) verwendet. An den Stellen, an denen in den Beispielen die Funktion MsgBox steht, müssen Sie den bei jeder Iteration der Schleife zu wiederholenden Code eingeben.
  • Einige der Kommentare im Code beschreiben alternative Verfahren zum Ausführen einer bestimmten Aufgabe oder anderer Aufgaben mit ähnlichem Code.
  • Das in einigen Kommentaren verwendete Tildesymbol (~) muss durch den Namen des angegebenen Objekts [das in Anführungszeichen eingeschlossene Objekt, z. B. Arbeitsblätter ("Blatt1")] oder die Indexnummer des Objekts ersetzt werden.

For...Each...Next

In diesem Beispiel wird die Anweisung For...Each...Next verwendet, um in einer Schleife durch alle Zellen eines ausgewählten Bereichs zu gehen (in den Kommentaren wird eine alternative Methode genannt):
   ' To show the contents of each cell in a selection or specific range.
   Sub for_each_demo()

      ' Or, use "In Worksheet(~).Range(~)" to specify a specific range.
      For Each cell In Selection

         ' Displays cell contents in message box.
         MsgBox cell.Value

         ' Reset cell to next object.
      Next
   End Sub
				

For <Variable> = <n1> to <n2>

' This example loops through the code a specified number of times.
   Sub for_demo()

      ' Sets x to 1, adds 1 to x until x = 5, loops 5 times.
      For x = 1 To 5 Step 1

         ' Displays value of x in msgbox.
         MsgBox x

         ' Returns to top of loop 4 times.
      Next
   End Sub
				

"Do...Until" mit Prüfung zu Beginn der Schleife

In diesem Beispiel wird eine Do...Until-Schleife verwendet, um die Zellen einer Spalte nacheinander zu durchlaufen, bis die erste leere Zelle erreicht wird. Da das Makro die Prüfung zu Beginn der Schleife ausführt, wird der Code in der Schleife, falls die erste Zelle leer ist, nicht ausgeführt.
   ' Performs Do loop, testing at top of loop.
   ' Loops until empty cell is reached.
   ' Note that you can also use a Do While Not IsEmpty(ActiveCell) loop.

   Sub test_before_do_loop()

      ' Test contents of active cell; if active cell is empty, exit loop.
      Do Until IsEmpty(ActiveCell)

         ' Displays cell contents in message box.
         MsgBox ActiveCell.Value

         ' Step down 1 row to the next cell.
         ActiveCell.Offset(1, 0).Select

        ' Return to top of loop.
      Loop
   End Sub
				

"Do...Until" mit Prüfung am Ende der Schleife

In diesem Beispiel wird auch eine Do-Schleife verwendet, jedoch wird die Prüfung am Ende der Schleife ausgeführt. Die erste Zeile des Makros überprüft die erste Zelle. Ohne die erste Codezeile zum Prüfen der ersten Zelle würde der Code mindestens einmal ausgeführt werden, da die Schleife die Prüfung am Ende durchführt.
   ' Performs Do loop, testing at bottom of loop.

   Sub test_after_do_loop()

      ' Test to see if first cell is empty.
      If IsEmpty(ActiveCell) Then Exit Sub

         ' Begin loop.
         Do

            ' Displays cell contents in message box.
            MsgBox ActiveCell.Value

            ' Steps down one row to the next cell.
            ActiveCell.Offset(1, 0).Select

            ' Test contents of active cell; if empty, exit loop
            ' or Loop While Not IsEmpty(ActiveCell).

         Loop Until IsEmpty(ActiveCell)
      End Sub
				
Achtung: Fügen Sie keine Verzweigungen vor der While-Anweisung in den Schleifenkörper der While...Wend-Schleife ein. Dies verursacht eventuell Laufzeitfehler oder andere Probleme, die schwer zu lokalisieren sind.

Die Do...Loop-Anweisung stellt eine besser strukturierte und flexiblere Möglichkeit zum Ausführen von Schleifen dar. Die While...Wend-Schleife ist in Visual Basic für Applikationen aus Gründen der Abwärtskompatibilität enthalten.

"While...Wend"-Schleife

Hinweis: Die While...Wend-Schleife ist in Visual Basic für Applikationen aus Gründen der Abwärtskompatibilität enthalten.

In diesem Beispiel wird eine While...Wend-Schleife verwendet. Bei dieser Schleife wird die Prüfung nur zu Beginn der Schleife ausgeführt.
    ' Performs While loop, testing at top of the loop.
   Sub While_loop_demo()

      ' Sets condition of loop, while active cell is not empty.
      While Not IsEmpty(ActiveCell)

         ' Displays cell contents in message box.
         MsgBox ActiveCell.Value

         ' Step down one row to the next cell.
         ActiveCell.Offset(1, 0).Select

      ' End While loop.
      Wend
   End Sub
				

"If...Then..GoTo"-Schleife

In diesem Beispiel wird die Schleife mithilfe der Struktur "If <Bedingung> Then GoTo <Zeilenbeschriftung>"erstellt. Die Struktur wird am Ende der Schleife geprüft.
     Sub loop_using_goto()

      ' Test to see if first cell is empty.
      If IsEmpty(ActiveCell) Then Exit Sub

      ' Line label indicating top of loop.
   top:

      ' Displays cell contents in message box.
      MsgBox ActiveCell.Value

      ' Step down one row to the next cell.
      ActiveCell.Offset(1, 0).Select

      ' Test to see if new cell is empty.
      If Not IsEmpty(ActiveCell) Then GoTo top

   End Sub
				

Informationsquellen

Weitere Informationen zu Schleifenstrukturen erhalten Sie in der integrierten Hilfe des Visual Basic-Editors. Klicken Sie im Visual Basic-Editor auf den Office-Assistenten, geben Sie Schleifen ein, und klicken Sie auf Suchen, um die Themen anzuzeigen.

Weitere Informationen dazu, wie Sie Hilfe zu Visual Basic für Applikationen erhalten können, finden Sie in folgenden Artikeln der Microsoft Knowledge Base:
305326 Ressourcen für die Programmierung mit Visual Basic für Applikationen
226118 OFF2000: Ressourcen für die Programmierung mit Visual Basic für Applikationen
163435 Ressourcen mit Visual Basic für Applikationen für Programmierung
Microsoft Excel Visual Basic-Benutzerhandbuch, Version 5.0, S. 143-151

Eigenschaften

Artikel-ID: 141762 - Geändert am: Montag, 31. März 2008 - Version: 3.4
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Excel 95 Standard Edition
  • Microsoft Excel 5.0 Standard Edition
  • Microsoft Excel 98 für Macintosh
  • Microsoft Excel 5.0 für Macintosh
Keywords: 
kbcode kbhowto kbprogramming KB141762
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com