Hallo,
deine Schleife wird in jedem Fall nur einmal durchlaufen, weil
in jeder der Alternativen If und ElseIf ein Exit For steht,
wobei das ElseIf unnötig ist - Else genügt, weil im If-Zweig
geprüft wird, ob die Zelle leer ist, und wenn das nicht der
Fall ist, dann muss ja logischerweise etwas drinstehen.
ElseIf wird normalerweise verwendet, wenn es mehr als zwei
Alternativen gibt, aber Select Case nicht möglich oder nicht
zweckmäßig ist.
Der Schleifenabbruch nach nur einem Durchlauf ist doch aber
bei dir sicher nicht wirklich gewollt, sondern wenn in B17
nichts steht, soll B17:B22 von 1 bis 6 durchnumeriert werden,
oder? Nicht ganz klar ist, was anderenfalls passieren soll.
Du schreibst, "in der nächsten freien Zeile" - ist das dann
wirklich Zeile 18, oder kann es auch eine andere sein? Und
was soll dann da rein - in deinem Code wäre es 2, so dass
dann in B18:B23 die Werte 2 bis 7 stehen. Wenn das so sein
soll, ist Exit For völlig unnötig, vielleicht ist das
irgendwie ein Denkfehler von dir.
Dim i As Long ' Zeilen sind immer Long!
For i = 0 To 5
With Worksheets(1)
' Sheets kann auch ein Diagramm sein
If .Cells(17 + i, 2) = "" Then
Cells(17 + i, 2) = i + 1
Else
Cells(18 + i, 2) = i + 2
End If
End With
Next i
Fall du etwas anderes gemeint hast, versuche es noch mal
verbal rüberzubringen. Eine alte Erfahrung besagt, was man
nicht in Worten eindeutig formulieren kann, kann man auch
nicht programmieren. Übrigens, wenn das Ganze nicht Teil
eines größeren Vorhabens ist, scheint es mir ein bisschen
Overkill, dafür ein Makro zu bemühen.
Gruß
|