Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1160to1164
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

Wie effizient durch Zellen schleifen?

Wie effizient durch Zellen schleifen?
Holger
Hallo liebe Forumskollegen,
für ziemlich viele Aufgabenstellungen schleife ich durch Zellbereiche.
Ich löse das immer wieder anders, es klappt zwar, jedoch ist es nie effizient und wahrscheinlich viel zu kompliziert. Ich brauche immer die Adresse der jeweils aktuellen Zelle, da ich mit Offset Zellen links und rechts ansprechen bzw auslesen möchte. Meistens arbeite ich mit einer LOng und einer integer Variable für die Zeile und die Spalte. Dann finde ich die letzte Zelle heraus und packe den Wert auch in eine integer Variable. Es geht sobald los mit
Sub SONICHT
For each c in Range(blabla)
If intZeile > lngLastRow then exit sub
Cells(lngZeile, ingtCol).Value blablabla
intZeile = intZeile + 1
Next c
End Sub Ziemlich kompliziert und nicht effektiv, schließlich will ich mal was lernen.
Hier also die Aufgabe, bei der ich eure Hilfe brauche:
Ich will ab Zeile 7 von A7 bis J100 den Range Bereich einschränken.
Es sollen die Zellen von A7 bis A100 durchgeschleift werden.
Pro Zelle brauche ich die Cell Adresse, damit ich mit OffSet (wie genau geht das eigentlich), Werte von z.B A7 bis J7 auslesen kann.

Das ganze soll schnell und schick und effizient sein ohne mein kompliziertes Blabla.
Kollegen, wie geht sowas?

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Wie effizient durch Zellen schleifen?
16.06.2010 21:53:54
Ramses
Hallo
Option Explicit
Sub Warum_Nicht()
Dim srcRng As Range, myC As Range
Set srcRng = Range("A7:A100")
For Each myC In srcRng
'Offset 1. Zahl bezieht sich auf die Zeile im Verhältnis zur geprüften Zelle.
'Hier "myC"
'Offset 2. Zahl bezieht sich auf die Spalte im Verhältnis zur geprüften Zelle.
'In diesem Beispiel wird in die Nachbarzelle der gleichen Zeile geschrieben
myC.Offset(0, 1) = "Test"
'Die Zahlen können auch ins Minus gehen
'In diesem Beispiel wird in die Zelle links oberhalb der aktiven Zelle geschrieben
myC.Offset(-1, -1) = "Test"
Next myC
End Sub
Gruss Rainer
Anzeige
AW: Wie effizient durch Zellen schleifen?
16.06.2010 22:03:58
Holger
Hallo Rainer und schönen Abend,
Danke für deinen Code, der sieht schon mal kurz und gut aus.
Nur kapiere ich ihn nicht ganz.
MyC wird doch nirgendwo definiert was es ist, also
woher "weiß" VBA wie es durch die Zellen schleift und
welche Adresse My besitzt?
My ist also immer A7,A8,A9 etc ?
Wenn ich also die Zelle B7 ansprechen möchte, dann geht es so:?
myC.Offset(0, 1)
Die Zelle D7 wäre dann:
myC.Offset(0, 3)
und immer so weiter?
AW: Wie effizient durch Zellen schleifen?
16.06.2010 22:36:51
CitizenX
Hallo Holger,
Nur kapiere ich ihn nicht ganz.
MyC wird doch nirgendwo definiert was es ist

doch hier:

Dim srcRng As Range, myC As Range
Du hast es schon ganz recht Interpretiert,
For each "klappert" in dem vorgegebennen Bereich

srcRng
immer Spaltenweise dann Zeilenweise den Bereich ab.
in deinem Fall ist aber nur eine Spalte vorhanden ,so gehts dann nur Zeilen mäßig weiter...
Offset gibt den Bereich(Range)gegen über den angegebenen Bereich(in deinem Fall myC)den Versatz zurück.
Offset(Versatz Zeile,Versatz Spalte)
in Sachen Performance ist die For Each für Größere Bereiche recht langsam ,schneller gehts mit Arrays.
Eine Inspiration hierzu findest Du hier:
http://www.online-excel.de/excel/singsel_vba.php?f=47
und hier:
http://www.online-excel.de/excel/singsel_vba.php?f=152
viele Grüße
Steffen
Anzeige
AW: Wie effizient durch Zellen schleifen?
16.06.2010 22:12:22
Gerd
Hi Holger,
teste diesen vereinfachten Code mit der F8-Taste im Einzelschrittmodus.
Sub Warum_Nicht()
Dim srcRng As Range, myC As Range
Set srcRng = Range("A7:C11")
For Each myC In srcRng
myC.Select
Stop
Next myC
End Sub
Gruß Gerd
AW: Wie effizient durch Zellen schleifen?
16.06.2010 22:13:38
Holger
Hi Gerd,
auch Dir ein herzliches Danke.
Soweit kapiert, nur was macht das Stop?
AW: Wie effizient durch Zellen schleifen?
17.06.2010 08:02:03
Gerd
Hi Holger,
das Stop unterbricht den Codeablauf u. diente lediglich dazu, dass Du erkennen kannst,
in welcher Reihenfolge die Zellen des Bereichs in der Schleife durchlaufen werden.
Gruß Gerd

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige