Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Do While Schleife

VBA Do While Schleife
18.02.2017 13:00:28
marie
Hallo,
ich würde gerne wissen, wie ich eine Do While Loop Schleife nutze: Die Schleife soll über alle gefüllten Zeilen iterien, beginnend ab Zeile 2: Danke schonmal
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Do While Schleife
18.02.2017 13:18:02
onur
Hi marie,
Hier ein Beispiel:
dim z,s as long
z=2:s=3
while cells(z,s)>
Gruß
Onur
AW: VBA Do While Schleife
18.02.2017 13:19:00
Hajo_Zi
cells(z,s)""
würde ich vermuten.

AW: VBA Do While Schleife
18.02.2017 13:34:40
onur
Hi,
VBA korigiert das ja schliesslich automatisch ....
Gruß
Onur
Anzeige
AW: VBA Do While Schleife
18.02.2017 18:05:38
Luschi
Hallo Onur,
das glaubst Du ja wohl selbst nicht! Probier Deinen sehr besch(...) Code doch selbst mal aus.
Da wird Dir der miserable Code richtig um die Ohren gehauen.
Luschi aus klein-Paris
AW: VBA Do While Schleife
18.02.2017 18:25:24
onur
Hi Luschi,
Wo bin ich denn hier hin geraten?
Sind wir hier beim Proletentreff?
Ja, dann:
Hey Alter, was stimmt denn mit dem besch.... code nicht?
Das ist ein besch... Beispiel, Alter, den ich übrigens gerade ausprobiert habe, Alter!
Aber anscheinend gehörst du zu den Leuten, die immer "NEXT" eintippen statt "next", damit VBA keine Fehlermeldung bringt.
Gruss
Onur
Anzeige
AW: VBA Do While Schleife
21.02.2017 21:28:12
Luschi
Hallo Onur,
Du hast nicht begriffen, daß Dein geposteter Code so nicht einsatzbar ist - teste es doch mal am praktischen Beispiel, statt mit den Iphone-/Android-Handy ungetesteten Code zu verbreiten.
Gruß von Luschi
aus klein-Paris
AW: VBA Do While Schleife
21.02.2017 21:43:45
onur
Hi Luschi,
Hatte ich doch auch.
Aber kannst du mir trotzdem sagen, wo genau das problem ist/sein soll?
Ausserdem ging es mir eigentlich um deinen Umgangston - für konstruktive Kritik auf normalen niveau bin ich jedoch immer offen und dankbar.
Gruß
Onur
Anzeige
AW: VBA Do While Schleife
18.02.2017 13:24:49
Michael
Hi,
probiere mal das hier:
Sub schleife()
Dim zeile As Long
Dim spalte As String
spalte = "A" ' welche auch immer Du benötigst
zeile = 2
While Range(spalte & zeile)  ""
MsgBox "in Zelle " & spalte & zeile & " steht: " & Range(spalte & zeile).Value
zeile = zeile + 1
Wend
MsgBox "Die Zelle " & spalte & zeile & " ist leer."
End Sub

While ... Wend ist eine "kopfgesteuerte" Schleife, d.h. zuerst wird überprüft, ob das Kriterium zutrifft, und nur wenn ja, werden die Anweisungen innerhalb der Schleife ausgeführt.
Do ... Loop While ist "fußgesteuert", d.h. die Anweisungen werden mindestens einmal ausgeführt, auch wenn das Kriterium falsch ist - weil es erst am Schleifenende ausgewertet wird.
Schöne Grüße,
Michael
Anzeige
AW: VBA Do While Schleife
18.02.2017 13:32:56
marie
Lieben Dank!
AW: VBA Do While Schleife
19.02.2017 10:55:40
Gerd
Hallo,
noch eine mittig Gesteuerte. :-)
Sub D()
Dim Spalte As Long, Zeile As Long
Spalte = 1
Zeile = 2
Do
If Cells(Zeile, Spalte)  "" Then
MsgBox Cells(Zeile, Spalte).Value
Zeile = Zeile + 1
Else
Exit Do
End If
Loop
End Sub
Gruß Gerd
Anzeige
AW: VBA Do While Schleife
19.02.2017 13:52:32
Michael
Hi Gerd,
das Ding ist ja hübsch und erinnert mich irgendwie an Goto-Zeiten.
Der Vollständigkeit halber noch eine Variante:
Sub D_mit_Var()
Dim Spalte As Long, Zeile As Long
Dim abbruch As Boolean
MsgBox "Variablen sind nach dem Dim immer" & vbLf & _
"mit Standardwerten vorbelegt:" & vbLf & _
"Long mit 0, also Spalte = " & Spalte & vbLf & _
"Boolean mit Falsch (VBA: false), also abbruch = " & abbruch
Spalte = 1
Zeile = 2
Do
If Cells(Zeile, Spalte)  "" Then
MsgBox Cells(Zeile, Spalte).Value
Zeile = Zeile + 1
Else
abbruch = True
End If
Loop Until abbruch
End Sub

So etwas setze ich gerne ein, wenn sich bei der Entwicklung herausstellt, daß die Abbruchbedingungen zu "unhandlich" werden (mehrere, ineinander verschachtelte IFs bzw. mehrere, mit And/Or usw. verknüpfte Abbruchbedingungen).
Schöne Grüße,
Michael
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA Do While Schleife in Excel


Schritt-für-Schritt-Anleitung

Um eine Do While Schleife in Excel VBA zu verwenden, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf den Projektbaum und wähle Einfügen > Modul.

  3. Schreibe den Code: Füge folgenden Code in das Modul ein:

    Sub DoWhileBeispiel()
        Dim zeile As Long
        zeile = 2 ' Beginn bei Zeile 2
        Do While Cells(zeile, 1) <> ""
            MsgBox "In Zelle A" & zeile & " steht: " & Cells(zeile, 1).Value
            zeile = zeile + 1
        Loop
    End Sub
  4. Führe das Makro aus: Drücke F5, um das Makro zu starten und die Schleife zu testen.


Häufige Fehler und Lösungen

  • Fehler: Schleife endet nicht: Wenn Cells(zeile, 1) niemals leer ist, wird die Schleife unendlich ausgeführt. Stelle sicher, dass deine Abbruchbedingung korrekt ist.
  • Fehler: "Method 'Cells' of object '_Global' failed": Überprüfe, ob die Zeilen- oder Spaltennummer korrekt ist. Der Index muss innerhalb des gültigen Bereichs liegen.

Alternative Methoden

Neben der Do While Schleife gibt es auch die While Schleife oder Do Until Schleife. Hier sind Beispiele für beide:

  • While Schleife:

    Sub WhileBeispiel()
        Dim zeile As Long
        zeile = 2
        While Cells(zeile, 1) <> ""
            MsgBox "In Zelle A" & zeile & " steht: " & Cells(zeile, 1).Value
            zeile = zeile + 1
        Wend
    End Sub
  • Do Until Schleife:

    Sub DoUntilBeispiel()
        Dim zeile As Long
        zeile = 2
        Do Until Cells(zeile, 1) = ""
            MsgBox "In Zelle A" & zeile & " steht: " & Cells(zeile, 1).Value
            zeile = zeile + 1
        Loop
    End Sub

Praktische Beispiele

Hier sind einige praktische Anwendungen der Do While Schleife:

Beispiel 1: Zellen auslesen und anzeigen

Sub ZellenAuslesen()
    Dim zeile As Long
    zeile = 2
    Do While Cells(zeile, 1) <> ""
        Debug.Print Cells(zeile, 1).Value
        zeile = zeile + 1
    Loop
End Sub

Beispiel 2: Summieren von Werten in einer Spalte

Sub SummiereWerte()
    Dim zeile As Long
    Dim summe As Double
    zeile = 2
    summe = 0
    Do While Cells(zeile, 1) <> ""
        summe = summe + Cells(zeile, 1).Value
        zeile = zeile + 1
    Loop
    MsgBox "Die Summe ist: " & summe
End Sub

Tipps für Profis

  • Verwende Do While ... Loop für Bedingungen, die mindestens einmal ausgeführt werden sollen.
  • Denke daran, den Exit Do Befehl zu nutzen, um Schleifen bei bestimmten Bedingungen vorzeitig zu beenden.
  • Nutze Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft, Fehler zu vermeiden.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen Do While und While Schleifen in VBA?
Die Do While Schleife überprüft die Bedingung am Anfang der Schleife, während die While Schleife die Bedingung am Ende überprüft.

2. Kann ich eine Schleife abbrechen?
Ja, du kannst eine Schleife mit dem Befehl Exit Do abbrechen, wenn eine bestimmte Bedingung erfüllt ist.

3. Wie funktioniert die Do Until Schleife?
Die Do Until Schleife funktioniert, bis eine bestimmte Bedingung wahr ist. Sie wird oft verwendet, wenn du nicht genau weißt, wie oft die Schleife durchlaufen wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige