Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1556to1560
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
Fehler bei If Then Else
19.05.2017 08:29:21
Markus
Hallo zusammen,
ich habe ein kleines Problem mit If Then.
Mein Code lautet:
For sh = 1 To 20
Workbooks(Dateiname).Worksheets(sh).Activate
With Workbooks(Dateiname).Worksheets(sh)
lzZeile = .Cells(18, 1).End(xlUp).Row
For a = 2 To lzZeile
If sh = 1 Then
For a = 3 To 23
End If
Hier bringt er mir den Fehler "For Steuervariable wird bereits verwendet"
Wenn ich das ganze so gestallte
For sh = 1 To 20
Workbooks(Dateiname).Worksheets(sh).Activate
With Workbooks(Dateiname).Worksheets(sh)
lzZeile = .Cells(18, 1).End(xlUp).Row
If sh = 1 Then
For a = 3 To 23
Else
For a = 2 To lzZeile
End If
sagte er mir "Else ohne If"
Kann mir jemnad verraten was ich falsch mache?
Danke
Susmark

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler bei If Then Else
19.05.2017 08:36:24
yummi
Hallo Markus,
du musst for schleifen und if verzweigungen als blöcke sehen, die zwar übereinander leigen können, aber nicht ineinander geschachtelt.

for a= 2 to lzzeile
if...
end if
next a
for a
next a

oder dein 2. Beispiel:

If sh = 1 Then
For a = 3 To 23
next a
Else
For a = 2 To lzZeile
next a
End If
gruß yummi
AW: Fehler bei If Then Else
19.05.2017 08:45:00
Rainer
Hallo Markus,
das ist aber nicht der ganze Code, oder? Ein For braucht doch ein Next am Ende?
Bei deinem Code 1 führst du 2 For Schleifen ineinander, beide mit "Zähler" a:

For sh = 1 To 20
Workbooks(Dateiname).Worksheets(sh).Activate
With Workbooks(Dateiname).Worksheets(sh)
lzZeile = .Cells(18, 1).End(xlUp).Row
For a = 2 To lzZeile
If sh = 1 Then
For a = 3 To 23
End If
'Hier bringt er mir den Fehler "For Steuervariable wird bereits verwendet"
Außerdem ist die zweite FOR Schleife nicht beendet vor der Anweisung "EndIf".
Dein zweiter Code:

'Wenn ich das ganze so gestallte
For sh = 1 To 20
Workbooks(Dateiname).Worksheets(sh).Activate
With Workbooks(Dateiname).Worksheets(sh)
lzZeile = .Cells(18, 1).End(xlUp).Row
If sh = 1 Then
For a = 3 To 23
Else
For a = 2 To lzZeile
End If
ist auch nicht viel besser. Das "Else" hat kein "If", weil dazwischen ein "For" steht, aber kein "Next". Die Schleife "FOR mit a" ist immer noch doppelt.
Es muss so aussehen:

For sh = 1 To 20
Workbooks(Dateiname).Worksheets(sh).Activate
With Workbooks(Dateiname).Worksheets(sh)
lzZeile = .Cells(18, 1).End(xlUp).Row
If sh = 1 Then
For a = 3 To 23
' Tu etwas
Next a
Else
For a = 2 To lzZeile
'Tu etwas anderes
Next a
End If
End With
Next sh
Gruß,
Rainer
Anzeige
AW: Fehler bei If Then Else
19.05.2017 08:56:00
Markus
Alles klar.
Danke für die Erklärung .
Ich habe es jetzt so gelöst:
 For sh = 1 To 20
Workbooks(Dateiname).Worksheets(sh).Activate
With Workbooks(Dateiname).Worksheets(sh)
lzZeile = .Cells(18, 1).End(xlUp).Row
If sh = 1 Then lzZeile = 23
For a = 2 To lzZeile
nicht besonders elegant, aber es läuft.
Danke für eure Antworten.
AW: Fehler bei If Then Else
19.05.2017 08:59:31
Rainer
Hallo Markus,
mit diesem Schnipsel an Code kann man über Eleganz nichts sagen und die ist zudem auch extrem subjektiv.
Wenn es klappt, dann gut. Aber du hast wieder einen Code gepostet, der 4 Schleifen startet und keine einzige abschließt. Beim nächsten mal poste bitte den kompletten Code.
Gruß,
Rainer
Anzeige
AW: Fehler bei If Then Else
19.05.2017 09:00:15
Markus
ok
AW: Fehler bei If Then Else
19.05.2017 09:01:25
Daniel
Hi
in deinem Fall müsstest du das so programmieren:
if sh = 1 then
x = 3
y = 23
Else
x = 2
y = lzZeile
End if
For a = x to y
Next

oder so, wenn du keinen zusätzlichen Variablen haben willst.
das ist zwar kürzer, aber nicht so übersichtlich:
for a = IIF(sh = 1, 3, 2) to IIF(sh = 1, 23, lzZeile)
Next
Gruß Daniel
AW: Fehler bei If Then Else
19.05.2017 09:11:20
Markus
auch gut. Danke

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige