ich habe ein makro mit drei Ranges namens y1,y2 und y3.
in der schleife soll er erst y1 nehmen im zweiten y2, usw.! Wie spreche ich das Range richtig an?
Range(y+i) geht nicht und Range (y&i) auch nicht! (i ist mein Zähler)
Danke!
Sub ttt()
'Ich habe ein makro mit drei Ranges namens y1,y2 und y3.
'in der schleife soll er erst y1 nehmen im zweiten y2, usw.! Wie spreche ich das Range richtig _
an?
'Range(y+i) geht nicht und Range (y&i) auch nicht! (i ist mein Zähler)
Dim y1 As Range, y2 As Range, y3 As Range, rng As Range, myrng As Range
Set y1 = [A1]: Set y2 = [A2]: Set y3 = [A3]
Set myrng = Union(y1, y2, y3)
For Each rng In myrng
MsgBox rng
Next
End Sub
Gruss
Sub ttt()
'Ich habe ein makro mit drei Ranges namens y1,y2 und y3.
'in der schleife soll er erst y1 nehmen im zweiten y2, usw.! Wie spreche ich das Range richtig _
an?
'Range(y+i) geht nicht und Range (y&i) auch nicht! (i ist mein Zähler)
Dim y1 As Range, y2 As Range, y3 As Range, myrng As Range, i As Long
Set y1 = [A1]: Set y2 = [A2]: Set y3 = [A3]
Set myrng = Union(y1, y2, y3)
For i = 1 To myrng.Count
MsgBox myrng(i)
Next i
End Sub
Gruss
Um in Excel VBA Ranges in einer Schleife korrekt anzusprechen, kannst du die folgenden Schritte befolgen:
Definiere deine Ranges: Erstelle Variablen für die Ranges, die du verwenden möchtest. Zum Beispiel:
Dim y1 As Range, y2 As Range, y3 As Range
Set y1 = [A1]: Set y2 = [A2]: Set y3 = [A3]
Union der Ranges: Fasse die Ranges in einer Union zusammen, um sie in einer Schleife zu durchlaufen:
Dim myrng As Range
Set myrng = Union(y1, y2, y3)
Schleife durch Ranges: Verwende eine For Each-Schleife, um durch die Ranges zu iterieren:
Dim rng As Range
For Each rng In myrng
MsgBox rng
Next rng
Alternative Schleife: Du kannst auch eine For-Schleife verwenden, um die einzelnen Ranges aufzurufen:
Dim i As Long
For i = 1 To myrng.Count
MsgBox myrng(i)
Next i
Fehler: Range(y+i)
oder Range("y"&i)
funktioniert nicht.
Cells(Zeile, Spalte)
oder kombiniere die Ranges in einer Union, wie oben beschrieben.Fehler: Der Code zeigt nur die ersten Zellen Y1, Y2, Y3.
Eine alternative Methode zur Ansprache von Ranges in einer Schleife ist die Verwendung von Cells
. Das Beispiel könnte wie folgt aussehen:
For i = 1 To 3
MsgBox Cells(i, 1).Value ' Gibt die Werte von A1, A2 und A3 aus
Next i
Diese Methode ist besonders nützlich, wenn du mit dynamischen Ranges arbeitest, da sie flexibler ist.
Hier ist ein vollständiges Beispiel, das zeigt, wie du Ranges in einer Schleife ansprechen kannst:
Sub Beispiel()
Dim y1 As Range, y2 As Range, y3 As Range
Set y1 = [A1]: Set y2 = [A2]: Set y3 = [A3]
Dim myrng As Range
Set myrng = Union(y1, y2, y3)
Dim rng As Range
For Each rng In myrng
MsgBox rng.Address & ": " & rng.Value
Next rng
End Sub
In diesem Beispiel werden die Adressen und Werte der Zellen A1, A2 und A3 angezeigt.
Verwende Option Explicit: Aktiviere die Option, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft, Fehler zu vermeiden.
Optimierung der Schleifen: Verwende Application.ScreenUpdating = False
, um die Bildschirmaktualisierung während der Schleifenoperationen zu deaktivieren und die Leistung zu verbessern.
Debuggen: Setze Breakpoints und verwende die Debug.Print-Anweisung, um den Wert von Variablen während der Ausführung zu überwachen.
1. Wie kann ich mehrere Ranges in einer Schleife verarbeiten?
Du kannst mehrere Ranges mit der Union
-Methode kombinieren und dann eine For Each-Schleife verwenden, um durch sie zu iterieren.
2. Was ist der Unterschied zwischen Cells und Range?
Cells
ist flexibler, da du Zeilen- und Spaltenindizes verwenden kannst, während Range
spezifische Zelladressen benötigt. Cells
ist ideal für dynamische Ranges.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen