Inhoudsopgave
Wanneer we een grote dataset in onze Excel-werkmap hebben, is het soms handig als we door rijen kunnen lussen om de specifieke resultaten die we willen krijgen eruit te halen. Het implementeren van VBA is de meest effectieve, snelste en veiligste methode om elke bewerking in Excel uit te voeren. In dit artikel laten we u 11 verschillende methoden zien om loop door rijen van een tabel in Excel met de VBA-macro .
Werkboek downloaden
U kunt de gratis oefen Excel-werkmap hier downloaden.
Lus door rijen van tabel met VBA.xlsm11 Methoden met VBA om door rijen van een tabel in Excel te lussen
In dit deel leert u hoe u loop door rijen van een tabel met 11 verschillende methoden, zoals loop door rijen tot een lege cel, loop door rijen tot een specifieke waarde is gevonden, loop door rijen en kleur een specifieke cel etc. met VBA macro in Excel.
Hierboven staat de voorbeelddataset die dit artikel zal volgen om de methoden te beschrijven.
1. Embed VBA om door elke cel in elke rij van een tabel te lussen op celreferentienummer
Als u loop door elke cel in elke rij van een tabel in uw Excel-werkblad en krijg de celreferentienummer als de retourwaarde volg dan de onderstaande stappen.
Stappen:
- Druk in het begin op Alt + F11 op uw toetsenbord of ga naar de tab Ontwikkelaar -> Visual Basic om te openen Visual Basic-editor .
- Vervolgens klikt u in het pop-up codevenster in de menubalk op Invoegen -> Module .
- Dan, kopie de volgende code en pasta in het codevenster.
Sub LoopThroughRowsByRef() LastRow = Range("B" & Rows.Count).End(xlUp).Row FirstRow = 4 i = FirstRow FirstColumn = 2 Do Until i> LastRow LastColumn = Cells(i, Columns.Count).End(xlToLeft).Column Count = FirstColumn Do Until Count> LastColumn MsgBox "Currently iterating cell " & Chr(Count + 64) & i Count = Count + 1 Loop i = i + 1 Loop End Sub
Uw code is nu klaar om te draaien.
- Druk nu op F5 op uw toetsenbord of selecteer in de menubalk Run -> Run Sub/UserForm U kunt ook gewoon op de klein pictogram Play in de submenubalk om de macro uit te voeren.
- Of om de dataset en het resultaat visueel te bekijken en te vergelijken, kunt u red de code en ga terug naar het werkblad van belang.
- Van daaruit kunt u klikken op Macro's van de Ontwikkelaar tab, selecteer de naam van de macro, en klik dan op Ren .
Na de succesvolle uitvoering van de code, kijk naar het bovenstaande gif om het resultaat te zien. Er zal een pop-up verschijnen MsgBox die je de celreferentienummer van elke cel van elke rij uit de tabel in uw Excel-blad.
VBA-code uitleg
LastRow = Range("B" & Rows.Count).End(xlUp).Row
Om het laatste rijnummer in de tabel te krijgen door te zoeken in kolom B.
EersteRij = 4
Stel rij nummer 4 in, waar onze gegevens beginnen.
i = FirstRow
Om te lussen vanaf de eerste rij.
EersteKolom = 2
Stel kolom nummer 2 in, waar onze gegevens beginnen.
Do Until i> LastRow LastColumn = Cells(i, Columns.Count).End(xlToLeft).Column
Loop door de rijen om het laatste kolomnummer te krijgen door de huidige rij te evalueren tot de laatste rij.
Count = FirstColumn Do Until Count> LastColumn
Increment looping van de kolom vanaf de eerste rij tot de laatste rij.
MsgBox "Momenteel itererende cel " & Chr(Count + 64) & i Count = Count + 1 Loop i = i + 1 Loop
Dit stukje code verwerkt, verhoogt na elke iteratie en toont het resultaat van de code.
Lees meer: Nieuwe rij automatisch toevoegen in een Excel-tabel
2. VBA toepassen om elke cel in elke rij op waarde te lussen
Als u lus door elke cel in elke rij van een tabel en gooi de waarde in de cellen als de retourwaarde dan zal deze sectie je helpen uit te zoeken hoe je dat doet met VBA Excel.
U kunt dat doen met de ListObject en met de DataBodyRange eigenschap van VBA We tonen u de macrocode met zowel het object als de eigenschap.
2.1. Met het ListObject
De stappen naar lus door elke cel in elke rij van een tabel per celwaarde met het ListObject in VBA Excel staan hieronder.
Stappen:
- Dezelfde manier als voorheen, open Visual Basic-editor van de Ontwikkelaar tab en Plaats a Module in het codevenster.
- Dan, in het codevenster, kopie de volgende code en pasta het.
Sub LoopThroughRowsByList() Dim iListRow As ListRow Dim iCol As Range Voor elke iListRow in ActiveSheet.ListObjects("TblStudents").ListRows Voor elke iCol in iListRow.Range MsgBox iCol.Value Next iCol Next iListRow End Sub
Uw code is nu klaar om te draaien.
- Daarna, Ren de macro zoals we die in de bovenstaande sectie hebben laten zien. Het resultaat is te zien in het onderstaande gif.
Er zal een pop-up zijn MsgBox die je de de waarde van elke cel van elke rij uit de tabel in uw Excel-blad.
VBA-code uitleg
Dim iListRow als ListRow Dim iCol als Range
Definieer de variabelen.
For Each iListRow In ActiveSheet.ListObjects("TblStudents").ListRows For Each iCol In iListRow.Range MsgBox iCol.Value Next iCol Next iListRow
Dit stukje code begint eerst met het doorlopen van de rijen in de tabel (" TblStudenten "Daarna wordt de waarde van de cel doorgegeven in MsgBox. Vervolgens wordt naar de volgende kolom gegaan. Nadat alle kolommen van een rij zijn doorlopen, wordt naar de volgende rij gegaan en wordt het iteratieproces voortgezet tot de laatste rij.
2.2. Met de eigenschap DataBodyRange
Om specifieker te zijn met de geëxtraheerde gegevens uit de tabel, kunt u de DataBodyRange eigenschap van ListObject . DataBodyRange eigenschap gooit u het resultaat met het bereik uit de lijst tussen de koprij en de invoegrij.
De stappen hoe je lus door elke cel in elke rij van een tabel per celwaarde met de DataBodyRange in VBA Excel staan hieronder.
Stappen:
- Zoals eerder aangegeven, open Visual Basic-editor van de Ontwikkelaar tab en Plaats a Module in het codevenster.
- Dan, kopie de volgende code en pasta in het codevenster.
Sub LoopThroughRowsByRange() Dim iRange As Range Voor Elke iRange In ActiveSheet.ListObjects("TblStdnt").DataBodyRange MsgBox iRange.Value Next iRange End Sub
Uw code is nu klaar om te draaien.
- Later, Ren de macro en kijk naar het volgende gif om de uitvoer te zien.
Er zal een pop-up zijn MsgBox die je de de waarde van elke cel van elke rij uit de tabel in uw Excel-blad.
VBA-code uitleg
Dim iRange Als Bereik
Definieer de variabele.
Voor Elke iRange In ActiveSheet.ListObjects("TblStdnt").DataBodyRange MsgBox iRange.Value Volgende iRange
Dit stukje code begint eerst met het doorlopen van de rijen in de tabel (" TblStdnt " is onze tabelnaam) en geeft een bereik van waarden exclusief de hoofdrij van de tabel. Geef dan de waarde van het bereik door in MsgBox. Dan gaat het naar de volgende rij om het bereik te extraheren en gaat het iteratieproces door tot de laatste rij.
3. VBA-macro toepassen om rijen te doorlopen door kolommen aan elkaar te koppelen in Excel
Dit deel laat zien hoe u loop door rijen in een tabel door de kolommen aaneen te rijgen met de eerste kolom van uw dataset in Excel.
Bijvoorbeeld, voor onze dataset, zullen we eerst itereren door John in cel B5 en 101 in cel C5 door ze aan elkaar te rijgen en dan te itereren door John in cel B5 en 89 in cel D5 door ze aan elkaar te rijgen van rij 5 .
Wij laten u zien hoe u dat kunt doen met VBA macro in Excel.
Stappen:
- In het begin, open Visual Basic-editor van de Ontwikkelaar tab en Plaats a Module in het codevenster.
- Ten tweede, in het codevenster, kopie de volgende code en pasta het.
Sub LoopThroughRowsByConcatenatingCol() Dim iRange Als Bereik Dim iValue Als String Met ActiveSheet.ListObjects("TblConcatenate") Voor Elke iRange In .DataBodyRange Als iRange.Column = .DataBodyRange.Column Dan iValue = iRange.Value Else MsgBox "Evaluating " & iValue & ": " & iRange.Value End If Volgende iRange End With End Sub
Uw code is nu klaar om te draaien.
- Ten derde, Ren Kijk naar het onderstaande gif om het resultaat te zien.
Er zal een pop-up zijn MsgBox die je de samengevoegde waarde van de cellen van de eerste en de tweede kolom ( John in cel B5 van Colum B en 101 in cel C5 van kolom C ) en dan de samengevoegde waarde van de cellen van de eerste en de derde kolom ( John in cel B5 van Colum B en 89 in cel D5 van kolom D ) van rij nummer 5 En deze aaneenschakeling gaat door tot de laatste rij van de tabel is bereikt.
VBA-code uitleg
Dim iRange als Bereik Dim iValue als String
Definieer de variabele.
Met ActiveSheet.ListObjects("TblConcatenate")
Vervolgens selecteert de code de tabel van het actieve blad (" TblConcatenate " in onze tabelnaam).
Voor Elke iRange In .DataBodyRange Als iRange.Column = .DataBodyRange.Column Dan iValue = iRange.Value
Daarna begint het itereren van elke rij met uitzondering van de kop van de kolom. Als de iteratie een overeenkomst vindt in het bereik tussen de kop van de kolom en de rijen dan slaat het de waarde op in de iWaarde variabel.
Else MsgBox "Evaluating " & iValue & ": " & iRange.Value End If Next iRange End With
Als niet aan de bovenstaande voorwaarde wordt voldaan, gooit de code de waarde in de MsgBox en beëindigt de voorwaarde. Daarna gaat de code verder met het lussen in een ander bereik en gaat door met itereren tot de eindrij. Zodra de eindrij is bereikt, beëindigt de macro de uitvoering van de code.
4. Embed Macro om rijen te doorlopen door alle kolommen in een tabel in Excel aan elkaar te koppelen
In dit deel leren we hoe we alle kolommen die elke rij bevat aan elkaar rijgen in de dataset met VBA macro in Excel.
De stappen om dat uit te voeren staan hieronder.
Stappen:
- Ten eerste, open Visual Basic-editor van de Ontwikkelaar tab en Plaats a Module in het codevenster.
- Dan, kopie de volgende code en pasta in het codevenster.
Sub LoopThroughRowsByConcatenatingAllCol() Dim iObj As Excel.ListObject Dim iSheet As Excel.Worksheet Dim iRow As Excel.ListRow Dim iCol As Excel.ListColumn Dim iResult As String Set iSheet = ThisWorkbook.Worksheets("ConcatenatingAllCol") Set iObj = iSheet.ListObjects("TblConcatenateAll") For Each iRow In iObj.ListRows For Each iCol In iObj.ListColumns iResult = iResult & " " &Intersect(iRow.Range, iObj.ListColumns(iCol.Name).Range).Value Next iCol MsgBox iResult iResult = "" Next iRow End Sub
Uw code is nu klaar om te draaien.
- Volgende, Ren de macrocode.
Zoals u kunt zien in het bovenstaande gif is er een pop-up MsgBox die je de samengevoegde waarde van alle kolommen in elke rij uit de tabel van uw Excel-werkblad.
VBA-code uitleg
Dim iObj As Excel.ListObject Dim iSheet As Excel.Worksheet Dim iRow As Excel.ListRow Dim iCol As Excel.ListColumn Dim iResult As String
Definieer de variabelen.
Set iSheet = ThisWorkbook.Worksheets("ConcatenatingAllCol")
Stel de bladnaam in waarmee we gaan werken (" ConcatenatingAllCol " is de bladnaam in de werkmap).
Set iObj = iSheet.ListObjects("TblConcatenateAll")
Definieer de tabelnaam waarmee we zullen werken (" TblConcatenateAll " is de tabelnaam in onze dataset).
Voor elke iRow in iObj.ListRows
Begint de iteratie door elke rij van de tabel.
Voor elke iCol in iObj.ListColumns
Begint de iteratie door elke kolom van elke rij van de tabel.
iResult = iResult & " " & Intersect(iRow.Range, iObj.ListColumns(iCol.Name).Range).Value Next iCol MsgBox iResult iResult = "" Next iRow
Slaat het resultaat op door de waarden die elke kolom van elke rij draagt te kruisen. Na het scannen van alle kolommen die in elke rij staan, geeft hij het resultaat door in de MsgBox. Dan begint hij opnieuw te lussen in de volgende rij en gaat hij door tot hij de laatste rij van de tabel bereikt.
Lees meer: Hoe meerdere kolommen van een tabel sorteren met Excel VBA (2 methoden)
5. Iteratie stoppen als waarde wordt gevonden door rijen van een tabel te doorlopen met VBA-macro
Stel dat u lus door de rijen van uw tabel heeft en de lus stopt wanneer het een specifieke waarde vindt U kunt dat doen met een simpele macro code.
Laten we leren hoe we dat moeten doen VBA in Excel.
Stappen:
- In het begin, open Visual Basic-editor van de Ontwikkelaar tab en Plaats a Module in het codevenster.
- Dan, in het codevenster, kopie de volgende code en pasta het.
Sub LoopDoorRijenVoorWaarde() Dim iData Als Bereik Voor Elke iData In Bereik("1:15") Als iData.Waarde = "Rand" Dan MsgBox "Rand is gevonden op " & iData.Adres End If Volgende iData End Sub
Uw code is nu klaar om te draaien.
- Later, Ren de macro.
- Het zal begin de lus en stop hem wanneer hij de specifieke waarde vindt (" Rand ") in het bereik en gooit de resulteren in de MsgBox .
Zoals u in de bovenstaande afbeelding kunt zien, is er een pop-up MsgBox die u de celadres, $B$10 waar we de opgegeven waarde hebben gevonden, " Rand " .
VBA-code uitleg
Dim iData Als Bereik
Definieer de variabele.
Voor Elke iData In Range("1:15") Als iData.Value = "Edge" Dan MsgBox "Edge is gevonden op " & iData.Address End If Volgende iData
Dit stukje code is hier om door de rijen van 1 tot 15 te lopen. Als het specifieke woord " Rand "Dan geeft hij het resultaat door met het celadres dat het woord bevat. Hij blijft dit doen tot hij klaar is met het scannen van alle gegevens van rij 1 tot 15 om het woord te zoeken.
Lees meer: Rijen en kolommen invoegen of verwijderen uit Excel-tabellen
6. VBA om elke rij te doorlopen en een specifieke waarde te kleuren in Excel
Wat als u het celadres van de opgegeven waarde niet in de MsgBox wilt gooien? U kunt misschien kleur de cel die de waarde draagt waar je naar op zoek bent.
Laten we leren hoe we dat doen met VBA macro.
Stappen:
- Dezelfde manier als voorheen, open Visual Basic-editor van de Ontwikkelaar tab en Plaats a Module in het codevenster.
- Dan, kopie de volgende code en pasta in het codevenster.
Sub LoopDoorRijenAndKleur() Dim iData Als Bereik Voor Elke iData In Bereik("1:15") Als iData.Waarde = "Rand" Dan iData.Interieur.KleurIndex = 8 Einde Als Volgende iData Einde Sub
Uw code is nu klaar om te draaien.
- Daarna, Ren de macro.
- Het zal start de lus en stopt hem wanneer hij de specifieke waarde vindt (" Rand ") in het bereik en kleur de cel met de ColourIndex die je in de code hebt opgegeven.
Zoals u kunt zien op de afbeelding hierboven, C ell B10 waar we de opgegeven waarde hebben gevonden, " Rand " is gekleurd na de uitvoering van de code.
VBA-code uitleg
Dim iData Als Bereik
Definieer de variabele.
Voor Elke iData In Range("1:15") Als iData.Value = "Edge" Dan iData.Interior.ColorIndex = 8 End If Volgende iData
Dit stukje code is hier om door de rijen van 1 tot 15 te lopen. Als het specifieke woord " Rand "Hij blijft dit doen tot hij klaar is met het scannen van alle gegevens van rij 1 tot 15, op zoek naar het woord.
Lees meer: Hoe te gebruiken VLOOKUP tabel array op basis van celwaarde in Excel
Vergelijkbare lezingen
- Bestaat de TABLE-functie in Excel?
- Hoe tabel naar lijst converteren in Excel (3 snelle manieren)
- Bereik omzetten naar tabel in Excel (5 eenvoudige methodes)
- Formule in een Excel-tabel effectief gebruiken (met 4 voorbeelden)
- Excel-tabelnaam: alles wat u moet weten
7. VBA toepassen om elke rij te doorlopen en elke oneven rij in Excel te kleuren
In het vorige hoofdstuk hebben we geleerd hoe we een cel met een specifieke waarde kunnen inkleuren. In dit hoofdstuk leren we hoe we lus door elke rij van een tabel en kleur elke oneven rij met VBA macro in Excel.
De stappen om het proces uit te voeren worden hieronder beschreven.
Stappen:
- Zoals eerder aangegeven, open Visual Basic-editor van de Ontwikkelaar tab en Plaats a Module in het codevenster.
- Dan, kopie de volgende code en pasta in het codevenster.
Sub LoopThroughRowsAndColorOddRows() Dim iRow As Long With Range("B4").CurrentRegion For iRow = 2 To .Rows.Count If iRow / 2 = Int(iRow / 2) Then .Rows(iRow).Interior.ColorIndex = 8 End If Next End With End Sub
Uw code is nu klaar om te draaien.
- Nu, Ren de macro en bekijk de volgende afbeelding om de uitvoer te zien.
Alle rijen met oneven nummers zijn gekleurd na het doorlopen van alle rijen in de tabel van het werkblad.
VBA-code uitleg
Dim iRow als Lang
Definieer de variabele.
Met Range("B4").CurrentRegion
Bepaal het bereik waarmee we gaan werken.
Voor iRow = 2 Tot .Rows.Count Als iRow / 2 = Int(iRow / 2) Dan .Rows(iRow).Interior.ColorIndex = 8 End If Next End With
Dit deel van de code verwijst naar de iteratie door alle rijen, beginnend bij de volgende rij van de huidige rij, B4 Indien de mod van het delen van de rijnummers door 2 gelijk is aan het geretourneerde rijnummer opgeslagen in een geheel getal, dan kleurt deze code alle rijen die door de berekening worden geëxtraheerd met de in de code opgegeven kleurindex. Hij blijft alle rijen doorlopen tot hij het einde van het bereik bereikt.
8. VBA toepassen om rijen te doorlopen en elke even rij in Excel te kleuren
In het vorige deel hebben we geleerd hoe we elke oneven rij van een tabel kunnen kleuren. In dit deel zullen we leren hoe we lus door elke rij van een tabel en kleur elke even rij met een VBA macro in Excel.
De stappen om het proces uit te voeren worden hieronder besproken.
Stappen:
- Ten eerste, open Visual Basic-editor van de Ontwikkelaar tab en Plaats a Module in het codevenster.
- Dan, kopie de volgende code en pasta in het codevenster.
Sub LoopThroughRowsAndColorEvenRows() Dim iRow As Long With Range("B4").CurrentRegion For iRow = 3 To .Rows.Count Step 2 .Rows(iRow).Interior.ColorIndex = 8 Next End With End Sub
Uw code is nu klaar om te draaien.
- Volgende, Ren de macro en bekijk de volgende afbeelding om het resultaat te zien.
Alle even genummerde rijen zijn gekleurd na het doorlopen van alle rijen in de tabel van het werkblad.
VBA-code uitleg
Dim iRow als Lang
Definieer de variabele.
Met Range("B4").CurrentRegion
Bepaal het bereik waarmee we gaan werken.
Voor iRow = 3 Tot .Rows.Count Stap 2 .Rows(iRow).Interior.ColorIndex = 8 Volgende Einde Met
Dit stukje code begint te itereren na de drie rijen vanaf de huidige rij, B4 Het kleurt het eerst, verhoogt dan het aantal rijen met 2 en blijft het kleuren tot het de laatste rij van de dataset bereikt.
9. Macro toepassen om rijen te doorlopen tot lege cel in Excel
Als je wilt dat je code werkt zoals hij zal werken loop door alle rijen van de tabel en stop wanneer het een lege cel bereikt dan is deze sectie voor u. U kunt die taak zowel met de FOR-lus en de Doe tot lus in Excel VBA .
9.1. Met FOR-lus
Stappen naar lus door rijen in een tabel tot een lege cel met FOR Loop in VBA Excel staan hieronder.
Stappen:
- In het begin, open Visual Basic-editor van de Ontwikkelaar tab en Plaats a Module in het codevenster.
- Daarna, kopie de volgende code en pasta in het codevenster.
Sub ForLoopThroughRowsUntilBlank() Dim x As Integer Application.ScreenUpdating = False NumRows = Range("B4", Range("B4").End(xlDown)).Rows.Count Range("B4").Select For x = 1 To NumRows ActiveCell.Offset(1, 0).Select Next Application.ScreenUpdating = True End Sub
Uw code is nu klaar om te draaien.
- Dan, Ren de macro en het resultaat staat in het onderstaande gif.
Na het uitvoeren van de macro begon door alle rijen te lopen in de tabel en zodra het de lege cel, cel B8 het stopte de iteratie .
VBA-code uitleg
Dim x als geheel getal
Definieer de variabele.
Application.ScreenUpdating = False
Schakel de scherm update gebeurtenis uit.
NumRows = Range("B4", Range("B4").End(xlDown)).Rows.Count
Bewaar alle rijen vanaf Cel B4 tot de laatste.
Range("B4").Select
Selecteer Cel B4 .
Voor x = 1 tot NumRows ActiveCell.Offset(1, 0).Select Next
Dit stukje code begint alle rijen te doorlopen. Wanneer het een lege cel in een rij vindt, selecteert het die en gaat verder met het scannen van de rijen tot het einde.
Application.ScreenUpdating = True
Schakel de gebeurtenis schermupdate in.
9.2. Met Do-Until lus
Stappen naar lus door rijen tot een lege cel met Do-Until lus in VBA worden hieronder gegeven.
Stappen:
- Ten eerste, open Visual Basic-editor van de Ontwikkelaar tab en Plaats a Module in het codevenster.
- Dan, kopie de volgende code en pasta in het codevenster.
Sub DoUntilLoopThroughRowsUntilBlank() Range("B4").Select Do Until IsEmpty(ActiveCell) ActiveCell.Offset(1, 0).Select Loop End Sub
Uw code is nu klaar om te draaien.
- Later, Ren Het resultaat wordt getoond in het volgende gif.
Na het uitvoeren van de macro, begon het looping door alle rijen in de tabel en zodra het de lege cel, cel B8 het stopte de iteratie .
VBA-code uitleg
Range("B4").Select
Selecteer de cel van waaruit we gaan werken.
Doe tot IsEmpty(ActiveCell)
Begint en gaat door met lussen totdat een lege cel is gevonden.
ActiveCell.Offset(1, 0).Select Loop
Wanneer in een rij een lege cel wordt gevonden, selecteert u die en stopt u de iteratie.
10. VBA Macro om rijen te doorlopen tot meerdere lege cellen in Excel
In het vorige deel hebt u geleerd hoe u de lus kunt stoppen wanneer een lege cel wordt gevonden. Maar wat als u de iteratie niet wilt stoppen totdat er meerdere lege cellen worden gevonden in plaats van slechts één.
De stappen naar loop door rijen tot meerdere lege cellen staan in een tabel met VBA Excel zijn hieronder weergegeven.
Stappen:
- Ten eerste, open Visual Basic-editor van de Ontwikkelaar tab en Plaats a Module in het codevenster.
- Dan, kopie de volgende code en pasta in het codevenster.
Sub LoopThroughRowsUntilMultipleBlank() Range("B4").Select Do Until IsEmpty(ActiveCell) And IsEmpty(ActiveCell.Offset(1, 0)) ActiveCell.Offset(2, 0).Select Loop End Sub
Uw code is nu klaar om te draaien.
- Nu, Ren de macro en zie het volgende gif voor de uitvoer.
Na het uitvoeren van de macro stopte niet bij de eerste lege cel, cel B8. Het stopte toen het twee opeenvolgende lege cellen op cel B16 .
VBA-code uitleg
Range("B4").Select
Selecteer de cel van waaruit we gaan werken.
Doe Totdat IsEmpty(ActiveCell) En IsEmpty(ActiveCell.Offset(1, 0))
Begint en gaat door met lussen totdat twee opeenvolgende lege cellen zijn gevonden.
ActiveCell.Offset(2, 0).Select Loop
Wanneer twee opeenvolgende lege cellen worden gevonden, selecteert u deze en stopt u de iteratie.
11. VBA inbouwen om door rijen te lussen door alle kolommen aan elkaar te rijgen tot ze leeg zijn in Excel
Dit deel laat zien hoe u Loop door alle rijen in een tabel en voeg alle kolommen samen tot een lege cel. wordt gevonden met VBA Excel.
Laten we leren hoe we dat doen met VBA macro in Excel.
Stappen:
- In het begin, open Visual Basic-editor van de Ontwikkelaar tab en Plaats a Module in het codevenster.
- Dan, kopie de volgende code en pasta in het codevenster.
Sub ConcatenatingAllColUntilBlank() Dim iSheet As Worksheet Dim iValue As Variant Dim iResult As String Set iSheet = Sheets("ConcatenatingAllColUntilBlank") iValue = Range("B4").CurrentRegion For i = 2 To UBound(iValue, 1) iResult = "" For J = 1 To UBound(iValue, 2) iResult = IIf(iResult = "", iValue(i, J), iResult & " " & iValue(i, J)) Next J MsgBox iResult Next i End Sub
Uw code is nu klaar om te draaien.
- Later, Ren de macro en zie het volgende gif voor het resultaat.
Zoals u kunt zien in het bovenstaande gif is er een pop-up MsgBox die je de samengevoegde waarde van alle kolommen in elke rij uit de tabel van uw Excel-werkblad. Maar het stopte zodra het de lege cel bereikte .
VBA-code uitleg
Dim iSheet Als Werkblad Dim iValue Als Variant Dim iResult Als String
Definieer de variabelen.
Set iSheet = Sheets("ConcatenatingAllColUntilBlank")
Stel de bladnaam in waarmee we gaan werken (" ConcatenatingAllColUntilBlank " is de bladnaam in de werkmap).
iWaarde = Range("B4").CurrentRegion
Bepaal het bereik waarmee we gaan werken.
Voor i = 2 tot UBound(iValue, 1) iResult = "" Voor J = 1 tot UBound(iValue, 2) iResult = IIf(iResult = "", iValue(i, J), iResult & " " & iValue(i, J)) Volgende J MsgBox iResult Volgende i
Dit stukje code begint de lus met de array. Het gaat door met de lus totdat het de grootste subscript van de array en de ondergrens van de eerste dimensie teruggeeft. Dan gaat het de iteratie in om de ondergrens van de tweede dimensie te extraheren. Daarna geeft het alle geëxtraheerde waarden door aan de iResult variabele door ze aan elkaar te rijgen en het resultaat in de MsgBox te gooien. Dat blijft hij doen tot hij een lege cel vindt.
Conclusie
Tot slot heeft dit artikel u 11 doeltreffende methoden getoond om loop door rijen van een tabel in Excel met de VBA-macro Ik hoop dat dit artikel nuttig voor u is geweest. Voel u vrij om vragen te stellen over dit onderwerp.