Een lijst met gegevens op een werkblad doorlopen met behulp van macro's in Excel
Samenvatting
Wanneer u een Microsoft Visual Basic for Applications-macro (VBA) schrijft, moet u mogelijk een lijst met gegevens op een werkblad doorlopen. Er zijn verschillende methoden voor het uitvoeren van deze taak. De sectie 'Meer informatie' van dit artikel bevat informatie over de methoden die u kunt gebruiken om de volgende typen lijsten te doorzoeken:
- Een lijst met een bekend, constant aantal rijen.
- Een dynamische lijst of een lijst met een onbekend aantal rijen.
- Een lijst met een specifieke vermelding.
Meer informatie
Microsoft verstrekt deze code zonder enige expliciete of impliciete garantie, daaronder mede begrepen, maar niet beperkt tot impliciete garanties met betrekking tot de verkoopbaarheid en/of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend bent met de programmeertaal VBScript, alsmede met de hulpprogramma's waarmee procedures worden gemaakt en waarmee fouten in procedures worden opgespoord. U kunt desgewenst contact opnemen met Microsoft Product Support Services voor uitleg over de functie van een bepaalde procedure. Microsoft Product Support Services is echter niet bereid de voorbeelden aan te passen om extra functies toe te voegen of om procedures te maken die aan uw specifieke eisen voldoen. In de volgende codevoorbeelden wordt ervan uitgegaan dat de lijst een koptekstrij heeft die begint in cel A1 en met gegevens die in cel A2 beginnen.
Een lijst zoeken met een constant, bekend aantal rijen
Deze code verplaatst kolom A naar beneden naar het einde van de lijst:
Sub Test1()
Dim x As Integer
' Set numrows = number of rows of data.
NumRows = Range("A2", Range("A2").End(xldown)).Rows.Count
' Select cell a1.
Range("A2").Select
' Establish "For" loop to loop "numrows" number of times.
For x = 1 To NumRows
' Insert your code here.
' Selects cell down 1 row from active cell.
ActiveCell.Offset(1, 0).Select
Next
End Sub
Een dynamische lijst of een lijst met een onbekend aantal rijen doorzoeken
Deze code verplaatst kolom A naar beneden naar het einde van de lijst. (Deze code gaat ervan uit dat elke cel in kolom A een vermelding tot het einde bevat.)
Sub Test2()
' Select cell A2, *first line of data*.
Range("A2").Select
' Set Do loop to stop when an empty cell is reached.
Do Until IsEmpty(ActiveCell)
' Insert your code here.
' Step down 1 row from present location.
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Opmerking Als kolom A lege cellen bevat in de gegevens, wijzigt u deze code om rekening te houden met deze voorwaarde. Zorg ervoor dat de lege cellen op een consistente afstand van elkaar liggen. Als bijvoorbeeld elke andere cel in kolom A leeg is (deze situatie kan bijvoorbeeld optreden als elke 'record' twee rijen gebruikt, waarbij de tweede rij één cel ingesprongen is), kan deze lus als volgt worden gewijzigd:
' Set Do loop to stop when two consecutive empty cells are reached.
Do Until IsEmpty(ActiveCell) and IsEmpty(ActiveCell.Offset(1, 0))
' Insert your code here.
'
' Step down 2 rows from present location.
ActiveCell.Offset(2, 0).Select
Loop
Een lijst voor een specifieke record zoeken
Deze code verplaatst kolom A naar beneden naar het einde van de lijst:
Sub Test3()
Dim x As String
Dim found As Boolean
' Select first line of data.
Range("A2").Select
' Set search variable value.
x = "test"
' Set Boolean variable "found" to false.
found = False
' Set Do loop to stop at empty cell.
Do Until IsEmpty(ActiveCell)
' Check active cell for search value.
If ActiveCell.Value = x Then
found = TRUE
Exit Do
End If
' Step down 1 row from present location.
ActiveCell.Offset(1, 0).Select
Loop
' Check for found.
If found = True Then
Msgbox "Value found in cell " & ActiveCell.Address
Else
Msgbox "Value not found"
End If
End Sub
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub Issues geleidelijk uitfaseren als het feedbackmechanisme voor inhoud. Het wordt vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor