Das Archiv des Excel-Forums

Do-Loop Schleife

Bild

Betrifft: Do-Loop Schleife
von: Peppi

Geschrieben am: 08.10.2003 18:40:23

Hallo,

Ich habe ein Problem mit einer Do-Loop Schleife. Ich bekomme immer die Fehlermeldung 'Loop ohne Do'.
Den Code habe ich unten mal eingefügt.


Vielen Dank

Gruß
Peppi

'Prüfen, ob SuchKatalogblatt bereits existiert
Set objSuchKatalogblatt = GetWorksheet(strSuchtext)
'Wenn SuchKatalogblatt nicht existiert, dann...
'If 1
If objSuchKatalogblatt Is Nothing Then
Do

'Alle Blätter durchlaufen
For Each objBlatt In ActiveWorkbook.Worksheets
'Verwendeten Bereich jedes Blatts durchsuchen
With objBlatt.UsedRange
'Suchfunktion aufrufen
Set objZelle = .Find(What:=Trim(strSuchtext), LookIn:=xlValues)
'Wenn erster Treffer, dann...
'If 2
If Not objZelle Is Nothing Then
'... Fundstelle merken
strErsteFundstelle = objBlatt.Name & "!" & objZelle.Address
'Wenn der Treffe nicht im Übersichtsblatt ist
'If 123
If objBlatt.Name <> "Übersicht" Then
'Sub Suchkatalogblattanlegen aufrufen
Call Suchkatalogblattanlegen(strSuchtext, strErsteFundstelle, objBlatt, objZelle)
Exit Sub
'Wenn der Treffer auf dem Übersichtsblatt ist...
'If 123
Else
'Die Schleife nochmal durchlaufen

Loop
'If 123
End If
Else
'Infobox mit "Keine Fundstellen!" öffnen
MsgBox "Keine Fundstellen!0000!", vbInformation, APP_NAME
Exit Sub
End If



End With


Next
Bild


Betrifft: AW: Do-Loop Schleife
von: Hajo_Zi
Geschrieben am: 08.10.2003 18:48:01

Hallo Peppi

arbeite mal mit Einrücken. If muß imer innerhalb Do Loop; For Next usw abgeschlossen sein. Bei Dir Stimmt fast nchts.
Hier mal den Code mit Einrücken, da fält es Dir bestimmt auch gleich auf.


Sub test()
'Prüfen, ob SuchKatalogblatt bereits existiert
Set objSuchKatalogblatt = GetWorksheet(strSuchtext)
'Wenn SuchKatalogblatt nicht existiert, dann...
'If 1
If objSuchKatalogblatt Is Nothing Then
Do
'Alle Blätter durchlaufen
For Each objBlatt In ActiveWorkbook.Worksheets
'Verwendeten Bereich jedes Blatts durchsuchen
With objBlatt.UsedRange
'Suchfunktion aufrufen
Set objZelle = .Find(What:=Trim(strSuchtext), LookIn:=xlValues)
'Wenn erster Treffer, dann...
'If 2
If Not objZelle Is Nothing Then
'... Fundstelle merken
strErsteFundstelle = objBlatt.Name & "!" & objZelle.Address
'Wenn der Treffe nicht im Übersichtsblatt ist
'If 123
If objBlatt.Name <> "Übersicht" Then
'

Sub Suchkatalogblattanlegen aufrufen
Call Suchkatalogblattanlegen(strSuchtext, strErsteFundstelle, objBlatt, objZelle)
Exit Sub
'Wenn der Treffer auf dem Übersichtsblatt ist...
'If 123
Else
'Die Schleife nochmal durchlaufen
Loop
'If 123
End If
Else
'Infobox mit "Keine Fundstellen!" öffnen
MsgBox "Keine Fundstellen!0000!", vbInformation, APP_NAME
Exit Sub
End If
End With
Next
End Sub



Falls Code vorhanden wurde dieser getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel

Das Forum lebt auch von den Rückmeldungen.

http://home.media-n.de/ziplies/



Bild


Betrifft: AW: Do-Loop Schleife
von: Josef Ehrensberger
Geschrieben am: 08.10.2003 18:50:43

Hallo Peppi,

ohne mich jetzt genauer mit deinem code auseinanderzusetzten,
liegt das problem wohl in der schlechten struckturierung und
fehlerhaften verschachtelung der schleifen.

*****
Do --- Schleife 1 start
For --- Schleife 2 start
With

Loop --- Ende Schleife 1
End With
Next --- Ende Schleife 2

****

Versuche zuerst einmal die verschachtelung zu korrigieren!

Gruß Sepp


Bild


Betrifft: AW: Do-Loop Schleife
von: Nepumuk
Geschrieben am: 08.10.2003 19:00:21

Hallo Pepi,
ich habe mal etwas Struktur in dein Programm gebracht. Nach jeder Anweisung die mehrere Zeilen umfasst nach rechts und jede abschließende Anweisung nach links. Du siehst, da stimmt nicht nur Do - Loop nicht, sondern auch For - Next sowie If - Else - End if auch With und End With stehen nicht übereinander. Geh einfach die erste If - Anweisung senkrecht nach unten und es kommt kein End If sondern Next. Wenn du in Zukunft deinen Programmen diese Struktur verleihst, können dir diese Fehler kaum noch passieren.

Option Explicit
Public Sub pepi()
Set objSuchKatalogblatt = GetWorksheet(strSuchtext)
If objSuchKatalogblatt Is Nothing Then
Do
For Each objBlatt In ActiveWorkbook.Worksheets
With objBlatt.UsedRange
Set objZelle = .Find(What:=Trim(strSuchtext), LookIn:=xlValues)
If Not objZelle Is Nothing Then
strErsteFundstelle = objBlatt.Name & "!" & objZelle.Address
If objBlatt.Name <> "Übersicht" Then
Call Suchkatalogblattanlegen(strSuchtext, strErsteFundstelle, objBlatt, objZelle)
Exit Sub
Else
Loop
End If
Else
MsgBox "Keine Fundstellen!0000!", vbInformation, APP_NAME
Exit Sub
End If
End With
Next
End Sub


Code eingefügt mit: Excel Code Jeanie


Gruß
Nepumuk


Bild


Betrifft: AW: Do-Loop Schleife
von: Peppi
Geschrieben am: 08.10.2003 19:17:56

Hallo,

vielen Dank. Ich werde es gleich mal ausprobieren. Ich mus zugeben. Mit einer richtigen Strukturierung stehe ich noch ein wenig auf Kriegsfuß, ist aber auch erst mein erstes Projekt.

Vielen Dank erstmal.

Gruß
Peppi


Bild


Betrifft: AW: Do-Loop Schleife
von: PeterW
Geschrieben am: 08.10.2003 19:31:32

Hallo Peppi,

schau dir im Downloadbereich mal vbePLUSde.zip an. Ein nettes Tool, das u.a. den Code passend einrückt. So lassen sich Strukturfehler recht schnell finden.

Gruß
Peter


Bild


Betrifft: AW: Do-Loop Schleife
von: Peppi
Geschrieben am: 08.10.2003 19:45:43

Hallo,

Danke für den Tip. Werde ich mir mal ansehen.

Grup
Peppi


 Bild

Excel-Beispiele zum Thema " Do-Loop Schleife"

In einer Schleife auf Elemente einer UserForm zugreifen download CheckBoxes in UserForms in eine Schleife einbinden download
Gruppe von UserForm-ListBoxes über eine Schleife ansprechen download UserForm-Optionsfelder über eine Schleife zurücksetzen download