Clever-Excel-Forum

Normale Version: Wie kriege ich alles in eine Programmzeile?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe Leute,

schaut euch bitte folgendes kleines Codefragment an:


For i = 1 To 10 :: If i > 5 Then Debug.Print " i > 5"
Next

Durch Setzen  von Doppelpunkten  kann ich Programmzeilen nebenander schreiben, statt untereinander.
Meine Frage, wie kriege ich es hin, dass das "Next" auch noch in einer Zeile steht?
Geht so etwas überhaupt?
Danke.
Hallo,

so

Code:
For i = 1 To 10: If i > 5 Then Debug.Print " i > 5": Next
Scheint in Verbindung mit einer If-Anweisung nicht zu klappen. Ohne If geht es wie von Steffl geschrieben.
Das liegt daran, dass man mehrere Befehle im Then-Zeil einer If-Zeile ausführen kann, wenn man diese mit dem Doppelpunkt trennt. ist z. B. die Bedingung in folgender Zeile Wahr, werden beide Anweisungen ausgeführt:
Code:
if i > 0 then Debug.print i: debug.print "i ist größer als 0"
Ein End If ist aber nur zulässig, wenn die if-Anweisung nicht in einer Zeile steht. Daher ist mW eine For-Next-Schleife mit If-Then in einer Zeile nicht möglich. Das Next müsste in eine eigene Zeile. Alternativ könnte mann iif verwenden.
Hallo liebe Leute,


also wenn ich das jetzt richtig sehe, gibt es keine Möglichkeit die For Next Schleife
mittels Doppelpunkt  so um die If Anweisung zu legen, dass man am Ende nur eine
Programmzeile hat, oder?
Moin!
Darf ich mal fragen, was Du Dir von weniger Zeilen versprichst?
Der Code jedenfalls wird dadurch ja nicht kürzer.
Ich selber verwende die DP-Programmierung (fast) nur in folgenden beiden Fällen:
  1. direkte Zuweisung einer Variablen:
    Dim a$: a = Tabelle1.Range("A1").Text
  2. .PasteSpecial angelehnt an den "normalen" .Copy-Einzeiler:
    Range("A1:Z100").Copy: Range("A1").PasteSpecial xlPasteValues
Gruß Ralf
Hallo Ralf,

warum ich an der DP-Programmierung so interessiert bin hat einen einfachen
Grund. Ich wandle meinen Code oft ins Epub Format um.
Diesen kann ich mir dann unabhängig von meinem Computer
auch  "offline" auf meinen E-Book Reader anschauen. Ist halt
eine Darstellungssache. Aber wenns nicht geht, dann gehts nicht.
Schade.
Hallöchen,

würden Dich leere Zeilen im Debug stören? Wenn nicht, eventuell so:
Code:
Sub test2(): Dim i, a: For i = 1 To 2: a = IIf(i > 5, "i > 5", ""): Debug.Print a: Next: End Sub


oder Du lagerst das if aus:
Code:
Sub test(): Dim i: For i = 1 To 2: iii (i): Next: End Sub
Sub iii(i): If i = 1 Then Debug.Print i
End Sub