2016-07-20 24 views
0

Ist es irgendwie in VBA möglich, eine For und If Anweisung in einer einzigen Zeile zu setzen? Der nächste, was ich bekommen konnte, ist dies:Excel VBA: "For" und "If" Anweisung auf einer einzigen Zeile?

For i = 0 To n: If a = i Then a = b 
Next i 

Wenn ich schreiben:

For i = 0 To n: If a = i Then a = b: Next i 

Ich erhalte die "Weiter ohne Für" Fehler.

+2

Warum brauchen Sie es in einer einzigen Zeile? – RGA

+0

Nur zum Lesen. Für kurze und einfache Code-Teile ist es oft einfacher, den Code in einer Zeile zu lesen und zu "begreifen", anstatt alles auf eine eigene Zeile zu setzen. – Klaidonis

+1

Keine Antwort, aber Sie werden das gleiche Verhalten mit * allen * der VBA-Schleifenstrukturen finden ('For ... Next',' Do ... Loop', 'While ... Wend',' For Each. ..Nächster'). Meine Vermutung ist, dass es mit einer Kombination von wie der Compiler mit Zeilennummern und Debugging Breakpoints zu tun hat zu tun hat. – Comintern

Antwort

3

Sie können es mit IIf statt If tun.

Dieser Code wird den Fehler nicht werfen:

For i = 0 To n: IIf a = i, a = b, False: Next i 
+0

Der einzige Nachteil ist, dass Sie die True oder False-Klausel nicht weglassen können. Ist es möglich, mehrere Anweisungen innerhalb des Wahr- oder Falsch-Teils zu haben? – Klaidonis

+1

Ich glaube nicht ... –

+0

a = b innerhalb der IIf-Klausel ist ein Vergleich, der wahr oder falsch ergeben wird, und ist keine Assigment-Anweisung, die den Wert von b an a gibt. –

0

Verwenden select case statt, wenn ...

For i = 0 To n: select case a = i: case true: a = b: end select: Next i