Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
632to636
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
632to636
632to636
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA fortlaufende Schleife

VBA fortlaufende Schleife
11.07.2005 17:28:42
pascal_h
Guten Tag,
Leider habe ich auf mein Post heute Nachmittag keine Antwort mehr erhalten. Ich wäre euch sehr dankbar, wenn mir jemand weiterhelfen könnte.
Ich bin Anfänger und habe mir folgendes Script geschrieben:

Sub DifferenzRechner()
Dim Interval As Integer
Interval = Range("A1")
StartZeit = Range("B1")
While ActiveCell <> ""
ActiveCell.Offset(1, 0).Select
If ActiveCell.Value - StartZeit >= Interval Then
ActiveCell.Offset(-1, 0).Copy [C1]
Exit Sub
End If
Wend
End Sub

Das Script läuft eine Liste ab (B:B) und vergleicht fortlaufend die Differenz der Listenwerten minus "StartZeit"Wert. Sobald die Differenz grösser ist als der Wert "Interval", wird der letzte Minuend in C1 kopiert.
Zum besseren Verständis vielleicht 1. Post ansehen (> Suchen, pascal_h eingeben... und dann kommts)
Wie kann ich nun weitergehen, d.h. nach der Kopie in C1 die Variable StartZeit von B1 nach B2 verschieben, und das ganze Spiel nocheinmal von dort starten. Ich erhalten dann für eben den Wert in B2 ebenfall einen Wert in C2.
Ich bin um jede Hilfe froh! Ich bedanke mich schon jetzt bei euch!
mfg Pascal

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA fortlaufende Schleife
12.07.2005 11:14:53
Harald
Hallo Pascal,
so ganz verstanden hab ich die Sache auch nicht, aber ich versuch dir mal ein paar Ansätze zu liefern.
Bau eine FOR NEXT Schleife (bzw. mehrere)

Sub DifferenzRechner()
Dim Interval As Integer, n as integer, i as integer
'Schleife Range A1 bis A letzte nichtleere in Spalte A
for n = 1 to cells(rows.count, 1).end(xlup).row
Interval = Range("A" & n)
StartZeit = Range("B" & n)
'dein Vorgang
next n
End Sub

Für diesen Vorgang:
D4 anklicken und activecell.select kannst Du ebenfalls eine FOR NEXT Schleife setzen.
for i = 4 to cell(rows.count, 4).end(xlup).row
if cells(i, 4).value - StartZeit >= Interval Then
statt kopieren mit = arbeiten
cells(gewünschte Startzeilennummer oder variable, 5) = cells(i,4) ggf.offset
Startzeilennummer = Startzeilennummer + 1
und oder next i, next n...was so an Variablen existiert ;-))
D.h. innere und äussere Schleifen nacheinander abarbeiten.
Ein ON ERROR RESUME NEXT nach den Deklarationen springt bei Fehler und/oder nicht gefundenen Werte auf den nächsten Suchbegriff.
Hoffe das hilft und verwirrt nicht noch mehr.
Gruß
Harald
Anzeige
AW: VBA fortlaufende Schleife
12.07.2005 13:31:12
pascal_h
Hallo Harald,
Vielen Dank für den Tip, ich habe mir das mit For Next auch schon überlegt und nun das Script mit Deiner Hilfe umgeschrieben:

Sub Differenzrechner()
Dim Interval As Integer, StartZeit As Integer, n As Integer, i As Integer
Interval = Range("A1")
START:
For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 2).Value - StartZeit >= Interval Then
Cells(i - 2, 3) = Cells(i, 2)
For n = 4 To Cells(Rows.Count, 1).End(xlUp).Row
StartZeit = Range("B" & n)
GoTo START
Next n
End If
Next i
End Sub

Das klappt genau bis zur 2. StartZeit. Weshalb stoppt die zweite For Next Schleife und gibt mir keine weiteren StartZeiten heraus? Also B1 als Startzeit ist gesetzt, B2 wird mir errechnet, jetzt gehts aber nicht mehr weiter.
Jedenfalls schon jetzt vielen Dank! Ich dachte, niemand könne oder wolle mir weiterhelfen!
Gruss Pascal
Anzeige
AW: VBA fortlaufende Schleife
12.07.2005 13:56:20
Harald
Hi Pascal,
es soll hier Leute geben, die bekommen Pickel, wenn sie Select und Goto in einem Code sehen ;-)))) Ich nicht. Bin selbst noch weit weg von vba gut.
Goto geht im Code niemals nach oben, sondern nur nach unten. Daher mein Hinweis mit ON ERROR RESUME NEXT.
Sieht dennoch so aus , als ob du neben der letzten Zelle noch ein zweites Abbruchkriterium einbauen willst.
Wenn ja. Per if Abfrage oder du nimmst dir doch eine Do while....Loop und baust die Fornext Schleife rein.
Wenn nicht, wie gesagt: On error resume next
Gruß und viel Erfolg
Harald

315 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige