Live-Forum - Die aktuellen Beiträge
Datum
Titel
03.05.2024 10:49:02
03.05.2024 10:43:56
03.05.2024 07:38:32
Anzeige
Archiv - Navigation
1928to1932
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Continue For

Continue For
12.05.2023 09:50:59
Christoph

Hallo Zusammen,

ich möchte eine For-Schleife mit der nächst höheren Laufvariablen von vorne beginnen, wenn eine bestimmte Bedingung nicht erfüllt ist. Bei mir kommt dann immer wenn ich das mit continue for machen will die fehlermeldung "Fehler beim Kompilieren, Ausdruck erwartet".

Das ist der Code:



    For k = 1 To variable
    'Anweisungen

   For j = 1 To variable 
   'Anweisungen

     For i = 7 To lastRow ' erste Zeile überspringen, Annahme, dass Überschrift in Zeile 1 ist
   
    Dim value As Variant

    If arrdictges(k).value = "Schächte" And Worksheets("Schächte").Cells(i, SSH(j)).value > "" Then ' Bedingung, dass Zelle in Spalte SSH1 nicht leer ist
    value = Worksheets("Schächte").Cells(i, ST).value
    
    ElseIf arrdictges(k) = "Haltungen" And Worksheets("Haltungen").Cells(i, HSH(j)).value > "" Then
    value = Worksheets("Haltungen").Cells(i, HT).value
    
    Else
    Continue for
    
    
    End If
   
   'Anweisungen

  Next i 
Next j 
Next k
    




So ist ca. der Aufbau. Woran kann das liegen oder wie kann ich das lösen? Ich will nur das nächste i haben und bei in der for i schleife wieder oben beginnen.

LG Christoph

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Continue For
12.05.2023 10:24:01
Christoph
Hallo Thorsten, Danke für deine Antwort!

Ich habe das bereits gelesen und sehe eigentlich keinen Fehler in meiner Logik.. Ich habe es jetzt vorerst mit GoTo gelöst bis ich vielleicht eine andere finde.

LG Christoph


Anzeige
AW: Continue For
12.05.2023 11:32:52
Oberschlumpf
Hi,

echt?
Ok, deine "Logik" enthält den Fehler, dass es in vbA den Befehl Continue (For/While/Loop) - nicht! - gibt.

Und GoTo ist die Alternative, von der ich schrieb, das stimmt schon, aber beachte lieber, was die Anderen geschrieben haben, denn mit GoTo wird es mit Sicherheit unübersichtlich(er) - und ja - zur Not musst du eben dein For/Next-Code noch mal neu schreiben...so is das eben manchmal.

Ciao


AW: Continue For
12.05.2023 10:20:31
ralf_b
vielleicht liegt es daran das es continue in VBA nicht gibt.
du könntest es mit einem goto-Befehl direkt vor das next i versuchen. Ist aber eher dann ein unleserlicher Code. Wenn du die Bedingungen umstellst, könntest du es vielleicht ohne solche Verrenkungen machen.


Anzeige
AW: Continue For
12.05.2023 10:26:34
Christoph
Okay, danke für deine Antwort!

Ich habe auch schon hier und da gelesen, dass es das nicht gibt, aber dachte wenn sogar die offizielle Microsoft Seite einen Artikel darüber hat muss es das doch auch geben :D

Schon möglich, dass es auch anders geht, aber der Code ist schon so komplex ich will ihn nicht noch mal komplett neu aufziehen..

LG Christoph


AW: Continue For
12.05.2023 13:42:34
onur
"aber dachte wenn sogar die offizielle Microsoft Seite einen Artikel darüber hat muss es das doch auch geben" ?
Microsoft hat auch offizielle Seiten für C, Java und Python. Benutzst du auch diese Befehle in VBA ?
VB und VBA ist NICHT das Selbe, deswegen auch das "A" am Ende.. :)


Anzeige
AW: Continue For
12.05.2023 10:40:48
GerdL
Hallo Chtistoph,

für das "vorzeitige" Erhöhen des Schleifenzählers i. Für den kompletten Neustart deiner innersten Schleife dagegen nimm den Befehl "Exit For".


Dim V As Variant 
Dim blnFertig As Boolean

'................

For i = 7 To lastRow
   
         'Dim value As Variant
         
         blnFertig = False
         
         ' Bedingung, dass Zelle in Spalte SSH1 nicht leer ist
         If arrdictges(k).value = "Schächte" And Worksheets("Schächte").Cells(i, SSH(j)).value > "" Then
            V = Worksheets("Schächte").Cells(i, ST).value
            blnFertig = True
         ElseIf arrdictges(k) = "Haltungen" And Worksheets("Haltungen").Cells(i, HSH(j)).value > "" Then
            V = Worksheets("Haltungen").Cells(i, HT).value
            blnFertig = True
         End If
        
        If Not blnFertig Then
        MsgBox "Mach noch was!"
        'Anweisungen
        End If
        

  Next 

'................i
Gruß Gerd


Anzeige
AW: Continue For
12.05.2023 10:54:22
Daniel
Hi

Grundsätzlich
Deklarationen gehören nicht mitten in den Code (vorallem nicht in eine Schleife), wenn dann vielleicht eine Rediminsionierung
ebenso solltst du du Variablen nicht genauso benennen wie VBA-Schlüsselwörter.
Das kann zwar funktionieren, muss aber nicht. und für den Leser ist es meistens verwirrend.
zur Lösung:
leere die Variable zu beginn (z.B. durch ein Redim) und prüfe dann, ob sie einen Wert erhalten hat, bevor du die weiteren Anweisungen durchführst, oder direkt zum Next gehts.
         For i = 7 To lastRow 
       
            ReDim value 'value leeren
    
            If arrdictges(k).value = "Schächte" And Worksheets("Schächte").Cells(i, SSH(j)).value > "" Then 
                value = Worksheets("Schächte").Cells(i, ST).value
            ElseIf arrdictges(k) = "Haltungen" And Worksheets("Haltungen").Cells(i, HSH(j)).value > "" Then
                value = Worksheets("Haltungen").Cells(i, HT).value
            Else
            End If
       
           if Vartype(value) > 0 then ' prüfen, ob Value einen Wert erhalten hat
               'Anweisungen
           end if
      Next i 
Gruß Daniel

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige