Anzeige
Archiv - Navigation
1168to1172
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

For Next Schleife Abbruchvariable innen erhöhen

For Next Schleife Abbruchvariable innen erhöhen
Svent
Hallo, ich habe ein Problem, bei welchem ich über VBA in einer Tabelle in einer For-Next-Schleife Zeilen einfügen muß, die Schleife soll aber bis zum Ende der Tabelle gehen. Folgende Lösung arbeitet nicht zufriedenstellend, wenn zeilen eingefügt werden. Die Variable Last_row wird wird unten in der Schleife
tadellos erhöht, jedoch hat die Erhöhung keinen Einfluß auf die Anzahl der Durchläufe.
Hat jemand eine Idee, wie man es gestalten könnte?
Sub KM_Neurechnen()
start_row = 2
last_row = Cells(Rows.Count, 1).End(xlUp).Row
For n = start_row To last_row
strecke = Cells(n, 5).Value
kma = Cells(n, 6).Value
kme = Cells(n, 7).Value
Rows(n).Select
Selection.Copy
If strecke + kma last_row = last_row + 1        ' Ham wir ne zeile mehr !
End If
MsgBox Str(n) + " " + Str(last_row)
Next n
End Sub
Danke
Svent
AW: For Next Schleife Abbruchvariable innen erhöhen
09.08.2010 18:18:14
mpb
Hallo,
wenn Zeilen eingefügt werden sollen, ist es zweckmäßig, den Bereich von unten nach oben zu durchlaufen. Dann erspart man sich das hochzählen von Variablen.
Ungetestet und um die selects und active-irgendwas bereinigt:
Sub KM_Neurechnen()
start_row = 2
last_row = Cells(Rows.Count, 1).End(xlUp).Row
For n = last_row To start_row Step -1
strecke = Cells(n, 5).Value
kma = Cells(n, 6).Value
kme = Cells(n, 7).Value
If strecke + kma 
Gruß
Martin
AW: For Next Schleife Abbruchvariable innen erhöhen
10.08.2010 04:49:21
Svent
Danke, ich muß das Fahrtenbuch aber von oben nach unten rechnen. Es gibt da noch einen ElseIf der wichtig ist, den ich aber der Einfachheit wegen nicht mitgeschrieben habe. Meine Frage war nicht was zweckmäßig ist, sondern wie man hinkriegt, daß die Abbruchvariable Last_row in der Schleife verändert werden kann und die Schleife dann entsprechend öfter durchlaufen wird.
Vielen Dank
Svent
Anzeige
AW: For Next Schleife Abbruchvariable innen erhöhen
10.08.2010 06:43:11
BoskoBiati
Hallo,
auch wenn man Schleifen nicht während des Laufs erhöhen sollte, hier mal ein Ansatz, der noch einige Fehler beseitigt. Die Zeile wird nach der Fahrt (ansonsten wirds problematisch mit dem n+1) eingefügt und die km-Zahlen angepaßt. Es wäre auch nicht schlecht, wenn in Spalte A eine Eintragung erfolgen würde, da das Makro sonst die letzte Zeile falsch berechnet, wenn neue Zeilen eingefügt werden.
Sub KM_Neurechnen()
Dim last_row As Long
Dim loN As Long
Dim strecke As Long
Dim lokmA As Long
Dim lokmE As Long
Dim loZuviel As Long
Dim loNeukmE As Long
Dim strZiel As String
Dim loStrecke As Long
last_row = Cells(Rows.Count, 1).End(xlUp).Row + 1
loN = 2
Do Until loN = last_row
loStrecke = Cells(loN, 5)
lokmA = Cells(loN, 6)
lokmE = Cells(loN, 7)
Cells(loN, 7) = Cells(loN, 5) + Cells(loN, 6)
If strecke + lokmA 
Gruß
Bosko
Anzeige
AW: For Next Schleife Abbruchvariable innen erhöhen
10.08.2010 11:41:48
BoskoBiati
Hallo,
hier noch ein paar Verschlankungen:
Option Explicit
Sub KM_Neurechnen()
Dim last_row As Long
Dim loN As Long
Dim strecke As Long
Dim lokmA As Long
Dim lokmE As Long
Dim loZuviel As Long
Dim loNeukmE As Long
Dim strZiel As String
Dim loStrecke As Long
last_row = Cells(Rows.Count, 1).End(xlUp).Row + 1
loN = 2
Do Until loN = last_row
loStrecke = Cells(loN, 5)
lokmA = Cells(loN, 6)
lokmE = Cells(loN, 7)
Cells(loN, 7) = Cells(loN, 5) + Cells(loN, 6)
If strecke + lokmA 

AW: For Next Schleife Abbruchvariable innen erhöhen
10.08.2010 19:23:46
Svent
Hallo und recht vielen Dank, man hätte auch selber drauf kömmen können, es mit einer ... do while-Schleife zu versuchen.
Das komische Cells(n,x).select hatte mir der Macrorecorder erzeugt und ich habs einfach so gelassen. Deine Variante ist naürlich die richtige. Ich habe vom VBA nicht viel Ahnung (habe früher mal umfangreichere Sachen im Clipper geschrieben) jedoch die Grundlagen sind ja halbwegs gleich.
Warum muß man eigentlich den Datentyp vorher festlegen, ich habe es ohne Datentyp-Belegung probiert und es funktioniert tadellos.
Nochmals Danke.
Svent
Anzeige
AW: For Next Schleife Abbruchvariable innen erhöhen
10.08.2010 19:52:50
BoskoBiati
Hallo,
mit Festlegung des Datentyps werden Typ-Fehler sofort erkannt, weil das Programm aussteigt und, und, ...
Es gibt ganze Abhandlungen darüber, es macht einfach Sinn.
Gruß
Bosko

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige