Registriert seit: 25.09.2014
Version(en): 2010-2013
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.
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo,
so
Code:
For i = 1 To 10: If i > 5 Then Debug.Print " i > 5": Next
Gruß Stefan
Win 10 / Office 2016
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
Scheint in Verbindung mit einer If-Anweisung nicht zu klappen. Ohne If geht es wie von Steffl geschrieben.
Schöne Grüße
Berni
Registriert seit: 11.03.2015
Version(en): mittlerweile meistens 2019
08.11.2018, 15:16
(Dieser Beitrag wurde zuletzt bearbeitet: 08.11.2018, 15:16 von Der Steuerfuzzi.)
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
Registriert seit: 25.09.2014
Version(en): 2010-2013
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?
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
09.11.2018, 18:53
(Dieser Beitrag wurde zuletzt bearbeitet: 09.11.2018, 18:53 von RPP63.)
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:
- direkte Zuweisung einer Variablen:
Dim a$: a = Tabelle1.Range("A1").Text
- .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)
Registriert seit: 25.09.2014
Version(en): 2010-2013
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.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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)