VBA For_Next schleife wird zu Dauerschleife?

4 Antworten

Vermutlich hast du i als Integer deklariert. Nimm stattdessen Single oder Double.

For rundet seine Argumente (Minimalwert, Maximalwert und Inkrement) auf denjenigen Datentyp, dem die Zählvariable angehört.

VB(A) nutzt beim Runden von Zahlen "Banker's Rounding" (Ausgeglichenes Runden), wobei bei genau 0,5 zur nächstliegenden geraden Zahl gerundet wird. (Sinn: dabei heben sich Rundungen ausgehend von genau halbzahligen Werten im Mittel auf anstatt sich im Mittel anzusammeln. Ist internationaler Standard und ganz bestimmt kein Fehler.)

Dummerweise ist die nächste gerade Zahl von 0,5 aus 0,0; d. h. die For-Schleife wird zu einer Schleife mit Inkrement 0, was natürlich eine Endlosschleife ist.



wobei bei genau 0,5 zur nächstliegenden geraden Zahl gerundet wird

soll bedeuten

wobei, wenn die Ausgangszahl genau in der Mitte zwischen zwei ganzen Zahlen liegt (d. h. der Dezimalteil genau 0,5 ist), zur nächstliegenden geraden Zahl gerundet wird

und (das grenzt jetzt an Erbsenzählerei, aber trotzdem)

For rundet ...

heißt korrekt

For konvertiert ...


0
@PWolff

Und

Minimalwert, Maximalwert und Inkrement

durch

Startwert, Endwert und Inkrement

ersetzen (das stimmt auch bei negativen Inkrementen, wo Startwert >= Endwert vorausgesetzt wird)

0

Hatte i als Integer deklariert.

2

Eine Dauerschleife / Endlosschleife könntest du zum Beispiel dann haben, wenn der Startwert größer ist als der Endwert.

So in etwa:

For i=10 To 1 Step 0.5

Du musst außerdem zusehen, dass i den richtigen Datentyp hat. Integer wäre fatal. Wahrscheinlich rundet er dann immer das Inkrement auf 0 ab.

For i = 1 To 10 Step 0.5
    s = i
    Print #1, i;
    v = funktion_v(a, s)
    Print #1, v
DoEvents
Next i

0
@adrian1812
  • Was ist denn i für ein Typ?
  • Terminiert es ohne den Funktionsaufruf?
  • Terminiert es ohne "DoEvents"?
1

In

For i=10 To 1 Step 0.5

wird die Schleife kein einziges Mal durchgeführt, weil 10 schon größer als 1 ist.

0
@PWolff

Kommt darauf an. Wenn Step -1 da stünde, würde da meine durchgegangen werden. Ich kann gerade nicht sagen, ob VBA rückwärtszählen erlaubt. In vielen Programmiersprachen geht das.

0
@Suboptimierer

VBA erlaubt negative Schrittweiten, passt die Überprüfung der Schleifenbedingung aber dem Vorzeichen der Schrittweite an.

1

Was immer hilft ist eine Haltemarke setzen. Damit siehst du wie sich i bei jedem Durchlauf verändert.

Ich glaube du hast i als integer deklariert und dann bleibt i 0.

Also entweder gar nicht oder als double deklarieren oder for i=0 to 20 step 1

und dann i wo benötigt durch 2 teilen!

Excel Zelle/Zeile automatisch verschieben?

Ich habe folgendes Problem: Ich habe eine Spalte mit verschiedenen Werten. Nun möchte ich unterm Strich das Maximum berechnen. Jedoch ist die Anzahl der Werte nicht fix. Mal habe mehr Werte mal weniger.

Nun brauche ich eine Formel, welches meine "Maximum Formel" automatisch nach unten oder nach oben verschiebt.

2

4

5

10

=Max(...) <- diese Formal soll sich immer anpassen

ich wäre für eine Hilfe sehr dankbar.

...zur Frage

Excel Zellvergleich: VBA oder bedingte Formatierung?

Ich habe eine Excel Tabelle mit 2 Spalten und einigen Zeilen. Nun möchte ich es schaffen, dass eine Zelle nach der anderen (For Schleife?) aus Spalte A mit allen Zellen aus Spalte B verglichen wird. WENN der Inhalt der Zelle aus Spalte A IN einer Zelle in Spalte B vorhanden ist, DANN färbe die Zelle NUR in Spalte B ein.

WIe mache ich das am geschicktesten? Geht es mit bedinger Formatierung oder VBA besser?

...zur Frage

Excel Template erstellen (ggf. mit Makros/VBA) mit dem CSV Files immer in der selben Struktur eingepflegt werden können?

Hallo,

Ich versuche gerade ein Excel Template zu erstellen, mit dem ich CSV Files immer in der gleichen Formatierung einpflegen kann.

Folgende Probleme:

  1. Im CSV File ist immer eine interne ID, die in Excel nicht erscheinen soll (Spalte A)

  2. Spalte F & G sollen Comment Spalten sein (nicht im CSV File enthalten), die Spalten aus dem CSV sollen dannach weitergehen

Wäre super wenn mir jemand weiterhelfen könnte.

LG

Deli

...zur Frage

Wie kann ich die Zeilennummer in Excel VBA herausfinden, in der ich mich gerade befinde?

Hi, mit welchem Code kann ich herausfinden, in welcher Zeile sich die activeCell gerade befindet? Danke für die Antworten schon im Voraus!

...zur Frage

VBA / Über Excel eine Email verschicken?

Hallo zusammen,

Kennt jemand von euch einen VBA Code mit dem ich einen Text in Excel als Email versenden kann.
Die Adresse und Betreffe sollte dann über eine Input Box abgefragt werden?

Danke im Voraus falls mir jemand helfen kann.

...zur Frage

Was möchtest Du wissen?