Nö, Brett ist genau richtig
Hallo Nico,
Fragen zu VBA bitte ins VBA-Brett.
pauschal völlig richtig aber ich glaube in diesem speziellen Fall falsch.
Meine Fragen sind ja
a) ist das in einer VB.Net-exe genauso?
b) Warum „klappt“ es bei Variant nicht?
c) Ist „For Zei = 1 To Zei“ ein NoGo?
Und das sind doch wohl reine .Net-Fragen *find*
Was bei dem gleichen einfachen Code in VB und (Excel-)-Vba geschieht habe
ich ja beschrieben. Jetzt interessiert es mich wie das in einer .Net-Exe abläuft.
Als .Net-dAU habe ich nicht die geringste Ahnung ob ihr (die .Netler *gg*)
den Code unverändert zu einer exe kompilieren lassen könnt.
Wenn ja, wie oft läuft dann die Schleife bei Zei as Long und bei Zei as Variant.
Ich fange mal mit deiner letzten Frage an:
Ist For Zei = 1 To Zei ein NoGo?
Meiner Meinung nach, ja. Denn sowohl deine Laufvariable als
auch die obere Grenze sind identisch. Dass es trotzdem fünf
mal durchläuft überrascht mich etwas. Wahrscheinlich
integriert der VBA-Compiler irgendwelche Mechanismen, damit
das nicht ins Endlose läuft. Das ist vermutlich auch der
Grund, warum es für einige Datentypen funktioniert und für
andere nicht.
Vllt. ist Variant ein anderer Datentyp als andere für eine For-Schleife in Frage
kommende. Andrer Datentyp = kein Datentyp genaugenommen.
Du solltest lieber folgende Schleife verwenden:
For zei As Long = 1 To 5
Next
Das ist wohl .Net-Syntax, die (das „as Long“) geht so in VB/Vba nicht.
Aber die Lsg. geht am Problem leider vorbei. Die „5“ ist bei Prozedurstart
nicht bekannt und wird erst vor der For-Schleife ermittelt.
Dafür steht beispielhaft Zei=5 im Code.
So kam es zu
Dim Zei as Long
Zei =5
For Zei=1 to Zei
Seitdem habe ich aus immenser VBA-Neugier den Gebet )
Gruß
Reinhard