Wie navigiere ich mit vba durch einen bereich?
Um einen Bereich in VBA zu durchlaufen, müssen Sie die Option „Für jede Schleife“ verwenden. Mithilfe dieser Schleife können Sie Code schreiben, in dem Sie VBA anweisen, jede Zelle im Bereich, in der Spalte oder in der Zeile zu durchlaufen und eine bestimmte Aktivität auszuführen.
Sub vba_loop_range() Dim iCell As Range For Each iCell In Range("A1:A10").Cells iCell.Value = "Yes" Next iCell End Sub
Hier sind die Schritte, um einen Strandspaziergang zu machen:
- Deklarieren Sie zunächst eine Variable, die als Zelle des zu durchlaufenden Bereichs verwendet werden soll.
- Starten Sie anschließend die „For Each“-Schleife und verwenden Sie die Variable „iCell“, um jede Zelle im Bereich während der Schleife darzustellen.
- Als Nächstes müssen Sie eine Codezeile schreiben, um eine Aktivität für jede Zelle auszuführen, in der wir den Bereich schleifen.
- Beenden Sie am Ende den Code für eine Schleife.
Führen Sie mithilfe von VBA eine Schleife über die gesamte Spalte und eine Zeile durch
Auf die gleiche Weise können Sie jede Zelle in einer Zeile mit dem folgenden Code durchlaufen, der mit dem im vorherigen Beispiel verwendeten Code identisch ist. Der einzige Unterschied besteht im angegebenen Bereich.
Hinweis: Bevor Sie eine ganze Spalte oder Zeile durchgehen, sollten Sie bedenken, dass die Schleife einige Zeit dauern kann und Ihr Excel für einige Minuten einfrieren kann.
Sub vba_loop_range() Dim iCell As Range For Each iCell In Range("A:A").Cells iCell.Value = "Yes" Next iCell End Sub
Und auf die gleiche Weise können Sie eine vollständige Zeile als durchlaufenden Bereich verwenden.
Sub vba_loop_range() Dim iCell As Range For Each iCell In Range("1:1").Cells iCell.Value = "Yes" Next iCell End Sub
Durchlaufen Sie den Dynamikbereich
Und wenn Sie über einen dynamischen Bereich von Zellen iterieren möchten, lesen Sie den folgenden Code.
Sub vba_dynamic_loop_range() Dim iCell As Range Dim iRange1 As String Dim iRange2 As String Dim rangeName As String iRange1 = ActiveCell.Address iRange2 = ActiveCell.Offset(5, 5).Address rangeName = iRange1 & ":" & iRange2 For Each iCell In Range(rangeName).Cells iCell = "Yes" Next iCell End Sub