Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Wie kriege ich alles in eine Programmzeile?
#1
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.
Antworten Top
#2
Hallo,

so

Code:
For i = 1 To 10: If i > 5 Then Debug.Print " i > 5": Next
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#3
Scheint in Verbindung mit einer If-Anweisung nicht zu klappen. Ohne If geht es wie von Steffl geschrieben.
Schöne Grüße
Berni
Antworten Top
#4
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.
Gruß
Michael
Antworten Top
#5
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?
Antworten Top
#6
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#7
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.
Antworten Top
#8
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
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste