Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
552to556
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
552to556
552to556
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Fehler: Next ohne For

Fehler: Next ohne For
27.01.2005 12:49:38
Andy
Hallo zusammen!
Ich weiß, einen ähnlichen Thread gab's hier schon einmal, doch die Antwort hat mir bei meinem Problem nicht weitergeholfen.
Folgender Code liefert den Fehler:

For iRuleIdx = LBound(m_RulesArray) To UBound(m_RulesArray)
        bFound = False
        For Each vntParam In m_objParamDict
                If (vntParam = m_RulesArray(iRuleIdx)(CFG_RULE)) Then
                        bFound = True
                        Exit For
                End If
        Next
        If (Not bFound) Then
                Print #hLogFile, vntParam & "... not found"
                Next iRuleIdx
        End If
        'hier tu was...
Next

Es wird ohne Murren kompiliert, wenn ich die Zeile "Next iRuleIdx" entferne. Aber ich will beim nächsten Schleifenschritt weitermachen und nicht die Anweisungen nach dem Kommentar ausführen. Klar könnte ich das auch mit einem "else" erledigen, aber mir geht's hier gerade ums Prinzip. Ich muss doch eine Schleife abbrechen können in VBA, oder??
Danke im Voraus für Hilfe!

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

Betreff
Datum
Anwender
Anzeige
AW: Fehler: Next ohne For
27.01.2005 12:58:13
Dominic
So sollte es gehen:
For iRuleIdx = LBound(m_RulesArray) To UBound(m_RulesArray)
bFound = False
For Each vntParam In m_objParamDict
If (vntParam = m_RulesArray(iRuleIdx)(CFG_RULE)) Then
bFound = True
Exit For
End If
Next
If (Not bFound) Then
Print #hLogFile, vntParam & "... not found"
End If
'hier tu was...
Next iRuleIdx
Gruß
Dominic
AW: Fehler: Next ohne For
27.01.2005 13:08:04
Andy
Danke für die prompte Antwort.... Bitte meinen Post nochmal aufmerksam lesen! Klar kompiliert Dein Ansatz, aber das Resultat ist nicht das von mir gewünschte, denn ich möchte aus dem aktuellen Schleifendurchlauf raus springen wenn "bFound=false" ist (Prozeß-Laufzeit)!
Ich hatte im Übrigen sowohl "next iRuleIdx" als auch nur "next" versucht, ohne Erfolg.
Vielleicht mal allgemein gefragt: Wie verlasse ich in VBA vorzeitig eine FOR-Schleife?
Anzeige
AW: Fehler: Next ohne For
27.01.2005 13:03:06
Martin Beck
Hallo Andy,
m.W. kann man nur die Bearbeitung der Schleife insgesamt abbrechen, mit Exit For.
Ansonsten ist Else auch logisch die richtige Lösung, also
For iRuleIdx = LBound(m_RulesArray) To UBound(m_RulesArray)
bFound = False
For Each vntParam In m_objParamDict
If (vntParam = m_RulesArray(iRuleIdx)(CFG_RULE)) Then
bFound = True
Exit For
End If
Next
If (Not bFound) Then
Print #hLogFile, vntParam & "... not found"
Else
'hier tu was...
End If
Next
Gruß
Martin Beck
Anzeige
AW: Fehler: Next ohne For
27.01.2005 13:12:24
Andy
Danke Martin,
sowas hatte ich schon vermutet. Ich bin leider etwas "verwöhnt" von anderen Programmiersprachen. Ich werde es mit dem ELSE lösen, auch wenn's eigentlich mal irgendwie nur hässlich ist! ;-)
Gruß,
Andy
AW: Fehler: Next ohne For
27.01.2005 13:14:50
Reinhard
Hi Andy,
aus welcher For-Schleife willst du raus wenn bfound false ist? aus der äußeren oder aus der inneren?
Gruß
Reinhard
AW: Fehler: Next ohne For
27.01.2005 13:35:42
Andy
Hi Reinhard,
ich möchte mit dem nächsten Datensatz des RulesArray weitermachen, also die äußere Schleife wieder aufnehmen, so wie ich das in Java oder C mit "continue" machen würde.
Der Abschnitt nach dem Kommentar ('hier tu was...) ist ziemlich mächtig und das alles in ein ELSE zu packen ist zwar legitim aber .... häßlich!! ;)
Gruß,
Andy
Anzeige
AW: Fehler: Next ohne For
27.01.2005 14:52:11
Reinhard
Hi Andy,
*hmmh* Goto ist auch nicht so schön:

Sub tt()
For iRuleIdx = LBound(m_RulesArray) To UBound(m_RulesArray)
For Each vntParam In m_objParamDict
If (vntParam = m_RulesArray(iRuleIdx)(CFG_RULE)) Then GoTo TuWas
Next vntParam
Print #hLogFile, vntParam & "... not found"
GoTo Nächste
TuWas:
'hier tu was...
Nächste:
Next iRuleIdx
End Sub

Am besten du lagerst "hier tu was..." in eine eigene Sub asu.
Oder so:

If bFound = true then
'hier tu was...
else
Print ....
end if
Gruß
Reinhard
AW: Fehler: Next ohne For
27.01.2005 19:58:30
kein offener ?

158 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige