Hallo Gunnar,
Dim i As Byte
i = 3
i = i + (-1)Sollte mich das nun überraschen, dass das keinen Fehler liefert?
Bei dieser Addition wird offenbar nicht versucht, die -1 in den Typ Byte umzuwandeln.
Aber ist diese Addition nicht genau das, was nach jedem Schleifendurchlauf mit der Zählervariablen i (bei Step -1) passiert?
Nein. Für den Wert Step wird im Arbeitsspeicher genau soviel Platz reserviert, wie für die Laufvariable. Und in diesen Platz (Byte) geht eben der Wert (-1) nicht hinein. Daraus folgt - Überlauf. Du kannst durchaus einen Byte-Wert mit dem Integer-Wert (-1) verrechnen, solange der Byte-Wert dabei im Bereich 0 - 255 bleibt.
Probiers so:
Sub test()
Dim i As Byte
i = 3
Do While i > 0
MsgBox (i)
i = i - 1
Loop
End Sub
viele Grüße
Axel