Hoe navigeer je door een bereik met vba?
Om een bereik in VBA te doorlopen, moet je de optie “For Each Loop” gebruiken. Met behulp van deze lus kunt u code schrijven waarin u VBA vertelt elke cel in het bereik, de kolom of de rij te doorlopen en een specifieke activiteit uit te voeren.
Sub vba_loop_range() Dim iCell As Range For Each iCell In Range("A1:A10").Cells iCell.Value = "Yes" Next iCell End Sub
Hier zijn de stappen om over een strand te lopen:
- Declareer eerst een variabele die u wilt gebruiken als de cel van het bereik waarover u een lus wilt maken.
- Start daarna de lus “For Each” en gebruik de variabele “iCell” om elke cel in het bereik tijdens de lus weer te geven.
- Vervolgens moet u een regel code schrijven om een activiteit uit te voeren op elke cel waarin we het bereik herhalen.
- Beëindig aan het einde de code voor een lus.
Loop over de hele kolom en één rij met VBA
Op dezelfde manier kunt u elke cel in een rij doorlopen met behulp van de volgende code die identiek is aan de code die we in het vorige voorbeeld hebben gebruikt. Het enige verschil is het bereik dat we hebben opgegeven.
Opmerking: voordat u een hele kolom of rij doorloopt, moet u begrijpen dat de lus enige tijd kan duren en dat uw Excel een paar minuten kan vastlopen.
Sub vba_loop_range() Dim iCell As Range For Each iCell In Range("A:A").Cells iCell.Value = "Yes" Next iCell End Sub
En op dezelfde manier kunt u een volledige lijn gebruiken als bereik.
Sub vba_loop_range() Dim iCell As Range For Each iCell In Range("1:1").Cells iCell.Value = "Yes" Next iCell End Sub
Loop door het dynamisch bereik
En als u een dynamisch celbereik wilt herhalen, raadpleegt u de volgende 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