Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1108to1112
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 Each..Next-Anweisung

For Each..Next-Anweisung
reiner
Hallo Leute,
Eine Tabelle umfasst mehrere tausend Datensätze aufgeteilt auf mehrere Jahre. Die Datensätze des Jahres 2006 sind zwischen den Zeilen 2400 und 3200 gespeichert. Die Datensätze des Jahres 2007 sind zwischen den Zeilen 3201 und 4000 gespeichert. Die Datensätze des Jahres 2008 sind zwischen den Zeilen 4001 und 4800 gespeichert.
Zur besseren Auswertung soll die Tabelle künftig mittels VBA ausgewertet werden. Ich befinde mich noch in der Planung hinsichtlich des Aussehens und Platzierung der Bedienelemente auf der Formularoberfläche.
Mit der nachfolgenden Anweisung sollen z.B. Zellinhalte eines Jahrgangs in eine ComboBox eingelesen werden:
For Each Zelle In Range("E2400:E3200")
xxxxxx
xxxxxx
Next

Nun soll der Anweisung aber über 2 Variablen der Anfangs- und Endbereich des gewünschten Jahrgangs jeweils als Zeilennummer zugewiesen werden.
Das könnte z. B. folgendermaßen aussehen:
For Each Zelle In Range("E & Anfang :E & Ende")
xxxxxx
xxxxxx
Next

Natürlich funktioniert das nicht; aber das wäre dann auch die Frage: wie müsste die Anweisung korrekt aussehen damit ein gewählter Jahrgang variabel in die ComboBox eingelesen werden kann?
mfg
reiner

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

Betreff
Benutzer
Anzeige
AW: For Each..Next-Anweisung
22.10.2009 00:17:40
Daniel
Hi
so:
For Each Zelle In Range("E" & Anfang & ":E" & Ende)
oder so
For Each Zelle in Range(Cells(Anfang, 5), Cells(Ende , 5))
oder so
For Each Zelle in Cells(Anfang, 5).Resize(Ende-Anfang+1,1)
Gruß, Daniel
Range("E" & AnfZeile & ":E" & EndZeile),...
22.10.2009 00:23:51
Luc:-?
...wobei AnfZeile und EndZeile Variablen sind, Reiner,
die auch als Feld angelegt wdn könnten, das in einem weiteren ForEach- bzw For-Zyklus durchlaufen wdn kann. Da ich gern mit Konstanten arbeite, die sich auf Grund ihrer exponierten Notations­position am PgmAnfang leicht finden und b.Bed. ändern lassen, schlage ich Folgendes vor...
Const jahre As String = "2006 2007 2008",
bereiche As String = "E2400:E3200 E3201:E4000 E4001:4800"
Dim i As Integer, zelle As Range, vja, vber As Variant
vja = Split(jahre, " "): vber = Split(bereiche, " ")
For i = 0 To Ubound(vja)
For Each zelle in Range(vber(i))
Next zelle
Next i

Falls die jeweilige Jahreszahl noch innerhalb der Zyklen zugeordnet wdn soll, kann das hier mit CLng(vja(i)) geschehen. Natürlich gibt es auch andere Lösungen, bspw auch solche, die auf dem Einlesen der Ranges in Feldvariablen basieren bzw ...Value2 nutzen, was bei großen Datenmengen schneller ist, aber dazu findest du im Herber-Archiv (Alle Recherchen) genug. (Hier nur soviel: Die 2malige Anwendung von WorksheetFunction.Transpose auf den jeweiligen Bereich sollte schon genügen!)
Gruß Luc :-?
Anzeige
Danke Daniel und Luc
22.10.2009 11:06:24
reiner
o.T.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige