VBA ciklas per "Excel" lentelės eilutes (11 metodų)

  • Pasidalinti
Hugh West

Kai "Excel" darbaknygėje turime didelį duomenų rinkinį, kartais patogu, jei galime cikliškai peržiūrėti eilutes ir išgauti konkrečius norimus rezultatus. VBA yra veiksmingiausias, greičiausias ir saugiausias būdas atlikti bet kokią operaciją "Excel" programoje. Šiame straipsnyje parodysime 11 skirtingų metodų, kaip ciklas per lentelės eilutes "Excel" programoje su VBA makrokomandos .

Atsisiųsti darbo knygą

Nemokamą "Excel" pratybų sąsiuvinį galite atsisiųsti iš čia.

Kilpa per lentelės eilutes naudojant VBA.xlsm

11 "Excel" lentelės eilučių ciklo sudarymo metodų naudojant VBA

Šiame skyriuje sužinosite, kaip ciklas per lentelės eilutes 11 skirtingų metodų, pavyzdžiui, ciklas per eilutes iki tuščio langelio, ciklas per eilutes iki konkrečios vertės, ciklas per eilutes ir konkretaus langelio nuspalvinimas ir t. t. su VBA makrokomandą "Excel" programoje.

Aukščiau pateiktas duomenų rinkinio pavyzdys, kuris bus naudojamas šiame straipsnyje aprašant metodus.

1. Įdiegti VBA, kad būtų galima pagal langelio nuorodos numerį pereiti per kiekvieną lentelės eilutės langelį

Jei norite ciklas per kiekvieną lentelės eilutės langelį "Excel" darbalapyje ir gaukite ląstelės nuorodos numeris kaip grąžinama reikšmė , tada atlikite toliau nurodytus veiksmus.

Žingsniai:

  • Pradžioje paspauskite Alt + F11 klaviatūroje arba eikite į skirtuką Programuotojas -> "Visual Basic atidaryti "Visual Basic" redaktorius .

  • Tada iššokančiame kodo lange meniu juostoje spustelėkite Insert -> Modulis .

  • Tada, kopijuoti šį kodą ir įklijuokite į kodo langą.
 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 

Dabar jūsų kodas paruoštas paleisti.

  • Dabar paspauskite F5 klaviatūroje arba meniu juostoje pasirinkite Run -> Run Sub/UserForm Taip pat galite tiesiog spustelėti maža piktograma "Play submeniu juostoje, kad paleistumėte makrokomandą.

  • Arba norėdami vizualiai pamatyti ir palyginti duomenų rinkinį ir rezultatą, galite išsaugoti kodą ir grįžti į darbalapį domina.
  • Iš ten galite spustelėti Makrokomandos Kūrėjas skirtukas, pasirinkite makrokomandos pavadinimą, ir spustelėkite Paleisti .

Sėkmingai įvykdžius kodą, pažiūrėkite į pirmiau pateiktą gif paveikslėlį, kad pamatytumėte rezultatą. Bus rodomas iškylantysis langas MsgBox rodyti jums kiekvienos eilutės ląstelės nuorodos numeris iš "Excel" lape esančios lentelės.

VBA kodo paaiškinimas

 LastRow = Range("B" & amp; Rows.Count).End(xlUp).Row 

Paskutinės lentelės eilutės numerio gavimas ieškant B stulpelyje.

 FirstRow = 4 

Nustatykite 4 eilutę, nuo kurios prasideda mūsų duomenys.

 i = FirstRow 

Kilpa nuo pirmosios eilutės.

 FirstColumn = 2 

Nustatykite 2 stulpelį, nuo kurio prasideda mūsų duomenys.

 Do Until i> LastRow LastColumn = Cells(i, Columns.Count).End(xlToLeft).Column 

Pradėkite ciklą per eilutes, kad gautumėte paskutinio stulpelio numerį, vertindami dabartinę eilutę iki paskutinės eilutės.

 Count = FirstColumn Do Until Count> LastColumn 

Padidinkite stulpelio ciklą nuo pirmosios eilutės iki paskutinės eilutės.

 MsgBox "Šiuo metu iteruojamas langelis " & Chr(Count + 64) & i Count = Count + 1 Loop i = i + 1 Loop 

Ši kodo dalis apdoroja, po kiekvienos iteracijos padidina ir parodo kodo rezultatą.

Skaityti daugiau: Kaip automatiškai pridėti naują eilutę "Excel" lentelėje

2. Įgyvendinti VBA, kad būtų galima pagal reikšmę pereiti per kiekvieną kiekvienos eilutės ląstelę

Jei norite ciklas per kiekvieną lentelės eilutės langelį ir kaip grąžinamąją vertę išmeta langeliuose esančią reikšmę , tuomet šiame skyriuje sužinosite, kaip tai padaryti naudojant VBA "Excel".

Tai galite padaryti naudodami ListObject ir su DataBodyRange savybė VBA . Parodysime makrokomandos kodą su objektu ir savybe.

2.1. Su ListObject

Veiksmai, kuriuos reikia atlikti su "ListObject" ciklu pereikite per kiekvieną lentelės eilutės langelį pagal langelio vertę svetainėje VBA Toliau pateikiami "Excel" duomenys.

Žingsniai:

  • Kaip ir anksčiau, atidarykite "Visual Basic" redaktorius Kūrėjas skirtukas ir Įdėkite a Modulis kodo lange.
  • Tada kodo lange, kopijuoti šį kodą ir įklijuokite jį.
 Sub LoopThroughRowsByList() Dim iListRow As ListRow Dim iCol As Range For Each iListRow In ActiveSheet.ListObjects("TblStudents").ListRows For Each iCol In iListRow.Range MsgBox iCol.Value Next iCol Next iListRow End Sub 

Dabar jūsų kodas paruoštas paleisti.

  • Po to, Paleisti makrokomandą, kaip rodėme ankstesniame skyriuje. Rezultatas parodytas toliau pateiktame paveikslėlyje.

Bus iššokantis MsgBox rodyti jums kiekvienos eilutės kiekvieno langelio reikšmė. iš "Excel" lape esančios lentelės.

VBA kodo paaiškinimas

 Dim iListRow As ListRow Dim iCol As Range 

Apibrėžkite kintamuosius.

 For Each iListRow In ActiveSheet.ListObjects("TblStudents").ListRows For Each iCol In iListRow.Range MsgBox iCol.Value Next iCol Next iListRow 

Ši kodo dalis pirmiausia pradeda ciklą per lentelės eilutes (" TblStudents " yra mūsų lentelės pavadinimas). Tada įveskite kiekvienos eilutės stulpelius. Po to MsgBox ląstelės reikšmę. Tada pereikite prie kito stulpelio. Baigus iteruoti visus vienos eilutės stulpelius, pereikite prie kitos eilutės ir tęskite iteracijos procesą iki paskutinės eilutės.

2.2. Su savybe DataBodyRange

Norėdami tiksliau apibūdinti iš lentelės išskirtus duomenis, galite naudoti DataBodyRange savybė ListObject . DataBodyRange savybė bus išmestas rezultatas, kuriame yra diapazonas iš sąrašo tarp antraštės eilutės ir įterptos eilutės.

Veiksmai, kaip galite ciklas per kiekvieną lentelės eilutės langelį pagal langelio vertę naudojant DataBodyRange svetainėje VBA Toliau pateikiami "Excel" duomenys.

Žingsniai:

  • Kaip parodyta anksčiau, atidarykite "Visual Basic" redaktorius Kūrėjas skirtukas ir Įdėkite a Modulis kodo lange.
  • Tada, kopijuoti šį kodą ir įklijuokite į kodo langą.
 Sub LoopThroughRowsByRange() Dim iRange As Range For Each iRange In ActiveSheet.ListObjects("TblStdnt").DataBodyRange MsgBox iRange.Value Next iRange End Sub 

Dabar jūsų kodas paruoštas paleisti.

  • Vėliau, Paleisti makrokomandą ir pažiūrėkite į šį gif paveikslėlį, kad pamatytumėte išvestį.

Bus iššokantis MsgBox rodyti jums kiekvienos eilutės kiekvieno langelio reikšmė. iš "Excel" lape esančios lentelės.

VBA kodo paaiškinimas

 Dim iRange As Range 

Apibrėžkite kintamąjį.

 For Each iRange In ActiveSheet.ListObjects("TblStdnt").DataBodyRange MsgBox iRange.Value Next iRange 

Ši kodo dalis pirmiausia pradeda ciklą per lentelės eilutes (" TblStdnt " yra mūsų lentelės pavadinimas) ir grąžina reikšmių intervalą, išskyrus lentelės antraštinę eilutę. Tada MsgBox perduoda intervalo reikšmę. Tada pereinama prie kitos eilutės, kad būtų išskirtas intervalas, ir tęsiamas iteracijos procesas iki paskutinės eilutės.

3. Taikyti VBA makrokomandą eilutėms kartoti sujungiant stulpelius "Excel" programoje

Šiame skyriuje bus parodyta, kaip ciklas per lentelės eilutes sujungiant stulpelius su pirmuoju stulpeliu iš savo duomenų rinkinio "Excel" programoje.

Pavyzdžiui, mūsų duomenų rinkinio atveju pirmiausia atliksime iteraciją per Jonas B5 langelyje ir 101 ląstelėje C5 juos sujungiant ir tada iteruojant per Jonas B5 langelyje ir 89 D5 langelyje sujungiant juos iš 5 eilutė .

Parodysime jums, kaip tai padaryti su VBA makrokomandą "Excel" programoje.

Žingsniai:

  • Iš pradžių atidarykite "Visual Basic" redaktorius Kūrėjas skirtukas ir Įdėkite a Modulis kodo lange.
  • Antra, kodo lange, kopijuoti šį kodą ir įklijuokite jį.
 Sub LoopThroughRowsByConcatenatingCol() Dim iRange As Range Dim iValue As String With ActiveSheet.ListObjects("TblConcatenate") For Each iRange In .DataBodyRange If iRange.Column = .DataBodyRange.Column Then iValue = iRange.Value Else MsgBox "Evaluating " & iValue & ": " & iRange.Value End If Next iRange End With End Sub 

Dabar jūsų kodas paruoštas paleisti.

  • Trečia, Paleisti Pažiūrėkite į toliau pateiktą gif paveikslėlį, kad pamatytumėte rezultatą.

Bus iššokantis MsgBox rodyti jums pirmojo ir antrojo stulpelio langelių susumuota vertė. ( John B5 langelyje iš B stulpelio ir 101 C5 ląstelės iš C stulpelio ) ir tada pirmojo ir trečiojo stulpelio langelių susumuota vertė. ( John B5 langelyje iš B stulpelio ir 89 D5 ląstelėje iš D stulpelio ) iš 5 eilutė iš jūsų duomenų rinkinio. Ši konkatenacijos operacija bus tęsiama tol, kol bus pasiekta paskutinė lentelės eilutė.

VBA kodo paaiškinimas

 Dim iRange As Range Dim iValue As String 

Apibrėžkite kintamąjį.

 Su ActiveSheet.ListObjects("TblConcatenate") 

Tada kodas pasirenka lentelę iš aktyviojo lapo (" TblConcatenate " mūsų lentelės pavadinime).

 For Each iRange In .DataBodyRange If iRange.Column = .DataBodyRange.Column Then iValue = iRange.Value 

Po to pradedama iteruoti kiekvieną eilutę, išskyrus stulpelio antraštę. Jei iteracijos metu randamas atitikimas tarp stulpelio antraštės ir eilučių, tuomet reikšmė įrašoma į iValue kintamas.

 Kitaip MsgBox "Evaluating " & iValue & ": " & iRange.Value End If Next iRange End With 

Jei pirmiau minėta sąlyga neįvykdoma, kodas išmeta reikšmę į MsgBox ir baigia vykdyti sąlygą. Po to jis pereina prie ciklo kitame intervale ir tęsia iteraciją iki galutinės eilutės. Pasiekęs galutinę eilutę, makrokomandas baigia vykdyti kodą.

4. Įterptinė makrokomanda, skirta eilutėms kartoti sujungiant visus "Excel" lentelės stulpelius

Šiame skyriuje sužinosime, kaip sujungti visus stulpelius, esančius kiekvienoje eilutėje. duomenų rinkinyje su VBA makrokomandą "Excel" programoje.

Toliau pateikiami šio veiksmo atlikimo veiksmai.

Žingsniai:

  • Pirma, atidarykite "Visual Basic" redaktorius Kūrėjas skirtukas ir Įdėkite a Modulis kodo lange.
  • Tada, kopijuoti šį kodą ir įklijuokite į kodo langą.
 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.ListColumn iResult = iResult & " " &Intersect(iRow.Range, iObj.ListColumns(iCol.Name).Range).Value Next iCol MsgBox iResult iResult = "" Next iRow End Sub 

Dabar jūsų kodas paruoštas paleisti.

  • Kitas, Paleisti makrokomandos kodą.

Kaip matote iš aukščiau pateikto gifo, yra iššokantis langas MsgBox rodyti jums visų stulpelių, esančių kiekvienoje eilutėje, sugretintos vertės. iš "Excel" darbalapio lentelės.

VBA kodo paaiškinimas

 Dim iObj As Excel.ListObject Dim iSheet As Excel.Worksheet Dim iRow As Excel.ListRow Dim iCol As Excel.ListColumn Dim iResult As String 

Apibrėžkite kintamuosius.

 Set iSheet = ThisWorkbook.Worksheets("ConcatenatingAllCol") 

Nustatykite lapo, su kuriuo dirbsime, pavadinimą (" ConcatenatingAllCol " yra darbaknygės lapo pavadinimas).

 Set iObj = iSheet.ListObjects("TblConcatenateAll") 

Apibrėžkite lentelės, su kuria dirbsime, pavadinimą (" TblConcatenateAll " yra mūsų duomenų rinkinio lentelės pavadinimas).

 For Each iRow In iObj.ListRows 

Pradeda iteraciją per kiekvieną lentelės eilutę.

 For Each iCol In iObj.ListColumns 

Pradeda iteraciją per kiekvieną lentelės eilutės stulpelį.

 iResult = iResult & " " & Intersect(iRow.Range, iObj.ListColumns(iCol.Name).Range).Value Next iCol MsgBox iResult iResult iResult = "" Next iRow 

Išsaugokite rezultatą, sukryžminę kiekvienos eilutės kiekvieno stulpelio reikšmes. Nuskaičius visus kiekvienoje eilutėje esančius stulpelius, rezultatas perduodamas į MsgBox. Tada vėl pradedamas ciklas kitoje eilutėje ir tęsiamas tol, kol pasiekiama paskutinė lentelės eilutė.

Skaityti daugiau: Kaip rūšiuoti kelis lentelės stulpelius naudojant "Excel VBA" (2 metodai)

5. Sustabdykite iteraciją, jei reikšmė rasta per lentelės eilutes su VBA makrokomanda

Tarkime, norite ciklas per lentelės eilutes ir sustabdyti ciklą, kai randama tam tikra reikšmė. . Tai galite padaryti naudodami paprastą makrokomandos kodą.

Sužinokime, kaip tai padaryti VBA "Excel" programoje.

Žingsniai:

  • Iš pradžių atidarykite "Visual Basic" redaktorius Kūrėjas skirtukas ir Įdėkite a Modulis kodo lange.
  • Tada kodo lange, kopijuoti šį kodą ir įklijuokite jį.
 Sub LoopThroughRowsForValue() Dim iData As Range For Each iData In Range("1:15") If iData.Value = "Edge" Then MsgBox "Edge is found at " & iData.Address End If Next iData End Sub 

Dabar jūsų kodas paruoštas paleisti.

  • Vėliau, Paleisti makrokomandą.
  • Ji bus paleisti ciklą ir jį sustabdyti, kai randama tam tikra reikšmė. (" Kraštas ") diapazone ir išmeta rezultatas MsgBox .

Kaip matote iš paveikslėlio, iššokantis MsgBox langelis rodo, kad ląstelės adresas, $B$10 , kuriame radome nurodytą reikšmę, " Kraštas " .

VBA kodo paaiškinimas

 Dim iData As Range 

Apibrėžkite kintamąjį.

 For Each iData In Range("1:15") If iData.Value = "Edge" Then MsgBox "Edge is found at " & iData.Address End If Next iData 

Ši kodo dalis skirta eilutėms nuo 1 iki 15. Jei ji randa konkretų žodį " Kraštas ", tada perduoda rezultatą su ląstelės, kurioje yra žodis, adresu. Taip daroma tol, kol baigiama skenuoti visus duomenis nuo 1 iki 15 eilutės ieškant žodžio.

Skaityti daugiau: Kaip įterpti arba ištrinti eilutes ir stulpelius iš "Excel" lentelės

6. VBA kilpa per kiekvieną eilutę ir tam tikros reikšmės nuspalvinimas "Excel" programoje

Ką daryti, jei nenorite MsgBox ląstelės adreso išmesti į nurodytą reikšmę? Galbūt norėsite nuspalvinkite ląstelę, kurioje yra reikšmė ieškote.

Sužinokime, kaip tai padaryti su VBA Makro.

Žingsniai:

  • Kaip ir anksčiau, atidarykite "Visual Basic" redaktorius Kūrėjas skirtukas ir Įdėkite a Modulis kodo lange.
  • Tada, kopijuoti šį kodą ir įklijuokite į kodo langą.
 Sub LoopThroughRowsAndColor() Dim iData As Range For Each iData In Range("1:15") If iData.Value = "Edge" Then iData.Interior.ColorIndex = 8 End If Next iData End Sub 

Dabar jūsų kodas paruoštas paleisti.

  • Po to, Paleisti makrokomandą.
  • Ji bus paleisti ciklą ir jį sustabdyti, kai randama tam tikra reikšmė (" Kraštas ") diapazone ir nuspalvinti langelį su ColourIndex kurį nurodėte kode.

Kaip matote iš paveikslėlio, C ell B10 , kuriame radome nurodytą reikšmę, " Kraštas " yra spalvotas po kodo vykdymo.

VBA kodo paaiškinimas

 Dim iData As Range 

Apibrėžkite kintamąjį.

 For Each iData In Range("1:15") If iData.Value = "Edge" Then iData.Interior.ColorIndex = 8 End If Next iData 

Ši kodo dalis skirta eilutėms nuo 1 iki 15. Jei ji randa konkretų žodį " Kraštas ", tada nuspalvina langelį, kuriame yra žodis. Taip daroma tol, kol baigiama nuskaityti visus 1-15 eilučių duomenis ieškant žodžio.

Skaityti daugiau: Kaip naudoti VLOOKUP lentelės masyvą pagal ląstelės vertę programoje "Excel

Panašūs skaitiniai

  • Ar "Excel" yra funkcija TABLE?
  • Kaip konvertuoti lentelę į sąrašą "Excel" programoje (3 greiti būdai)
  • Kategorijos konvertavimas į lentelę "Excel" programoje (5 paprasti metodai)
  • Efektyvus formulių naudojimas "Excel" lentelėje (su 4 pavyzdžiais)
  • "Excel" lentelės pavadinimas: viskas, ką reikia žinoti

7. Įgyvendinkite VBA, kad galėtumėte "Excel" programoje sudaryti kilpą per kiekvieną eilutę ir nuspalvinti kiekvieną nelygią eilutę

Ankstesniame skyriuje sužinojome, kaip nuspalvinti ląstelę, kurioje yra tam tikra reikšmė. Šiame skyriuje sužinosime, kaip ciklas per kiekvieną lentelės eilutę ir nuspalvina kiekvieną nelyginę eilutę su VBA makrokomandą "Excel" programoje.

Toliau aprašyti proceso vykdymo veiksmai.

Žingsniai:

  • Kaip parodyta anksčiau, atidarykite "Visual Basic" redaktorius Kūrėjas skirtukas ir Įdėkite a Modulis kodo lange.
  • Tada, kopijuoti šį kodą ir įklijuokite į kodo langą.
 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 

Dabar jūsų kodas paruoštas paleisti.

  • Dabar, Paleisti makrokomandą ir pažiūrėkite į toliau pateiktą paveikslėlį, kad pamatytumėte išvestį.

Visi nelyginės eilutės yra spalvotos. po to, kai cikliškai peržiūrėsite visas darbalapio lentelėje esančias eilutes.

VBA kodo paaiškinimas

 Dim iRow As Long 

Apibrėžkite kintamąjį.

 Su Range("B4").CurrentRegion 

Apibrėžkite diapazoną, su kuriuo dirbsime.

 For iRow = 2 To .Rows.Count If iRow / 2 = Int(iRow / 2) Then .Rows(iRow).Interior.ColorIndex = 8 End If Next End With 

Ši kodo dalis susijusi su visų eilučių iteracija, pradedant nuo kitos dabartinės eilutės eilutės, B4 . Jei eilučių numerių dalijimo iš 2 modas yra lygus grąžintam eilučių numeriui, saugomam sveikojo skaičiaus tipu, tuomet šis kodas nuspalvina visas eilutes, kurios išskirtos atliekant skaičiavimus su kode nurodytu spalvos indeksu. Jis toliau juda per visas eilutes, kol pasiekia diapazono pabaigą.

8. Įgyvendinkite VBA, kad galėtumėte "Excel" programoje sudaryti ciklą per eilutes ir nuspalvinti kiekvieną lyginę eilutę

Ankstesniame skyriuje sužinojome, kaip nuspalvinti kiekvieną nelyginę lentelės eilutę. Šiame skyriuje sužinosime, kaip ciklas per kiekvieną lentelės eilutę ir nuspalvina kiekvieną lyginę eilutę su VBA makrokomandos "Excel" programa.

Toliau aptariami proceso vykdymo etapai.

Žingsniai:

  • Pirma, atidarykite "Visual Basic" redaktorius Kūrėjas skirtukas ir Įdėkite a Modulis kodo lange.
  • Tada, kopijuoti šį kodą ir įklijuokite į kodo langą.
 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 

Dabar jūsų kodas paruoštas paleisti.

  • Kitas, Paleisti makrokomandą ir pažiūrėkite į toliau pateiktą paveikslėlį, kad pamatytumėte rezultatą.

Visi lyginės eilutės yra spalvotos. po to, kai cikliškai peržiūrėsite visas darbalapio lentelėje esančias eilutes.

VBA kodo paaiškinimas

 Dim iRow As Long 

Apibrėžkite kintamąjį.

 Su Range("B4").CurrentRegion 

Apibrėžkite diapazoną, su kuriuo dirbsime.

 For iRow = 3 To .Rows.Count Step 2 .Rows(iRow).Interior.ColorIndex = 8 Next End With 

Ši kodo dalis pradedama iteruoti po tris eilutes nuo dabartinės eilutės, B4 Pirmiausia ji nuspalvinama, tada eilučių skaičius padidinamas 2 ir spalvinama tol, kol pasiekiama paskutinė duomenų rinkinio eilutė.

9. Taikyti makrokomandą, kad "Excel" būtų galima kartoti eilutes, kol bus tuščia ląstelė

Jei norite, kad jūsų kodas veiktų kaip ciklas per visas lentelės eilutes ir sustoja, kai pasiekia tuščią langelį. tada šis skyrius skirtas jums. Šią užduotį galite atlikti tiek naudodami FOR kilpa ir "Do-Until" kilpa "Excel" programoje VBA .

9.1. Su FOR ciklu

Žingsniai į ciklas per lentelės eilutes, kol atsiras tuščia ląstelė su FOR Loop svetainėje VBA Toliau pateikiami "Excel" duomenys.

Žingsniai:

  • Iš pradžių atidarykite "Visual Basic" redaktorius Kūrėjas skirtukas ir Įdėkite a Modulis kodo lange.
  • Po to, kopijuoti šį kodą ir įklijuokite į kodo langą.
 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 

Dabar jūsų kodas paruoštas paleisti.

  • Tada, Paleisti makrokomandą, o rezultatas parodytas toliau pateiktame gif paveikslėlyje.

Paleidus makrokomandą, ji pradėjo ciklą per visas eilutes lentelėje, o kai jis pasiekia tuščias langelis, langelis B8 , tai sustabdė iteraciją .

VBA kodo paaiškinimas

 Dim x kaip sveikasis skaičius 

Apibrėžkite kintamąjį.

 Application.ScreenUpdating = False 

Išjunkite ekrano atnaujinimo įvykį.

 NumRows = Range("B4", Range("B4").End(xlDown)).Rows.Count 

Saugoti visas eilutes, pradedant nuo Ląstelė B4 iki paskutinio.

 Range("B4").Select 

Pasirinkite Ląstelė B4 .

 For x = 1 To NumRows ActiveCell.Offset(1, 0).Select Next 

Ši kodo dalis pradeda cikliškai skenuoti visas eilutes. Kai eilutėje randa tuščią langelį, jį pasirenka ir toliau skenuoja eilutes, kol pasiekia pabaigą.

 Application.ScreenUpdating = True 

Įjunkite ekrano atnaujinimo įvykį.

9.2. Su kilpa "Do-Until

Žingsniai į ciklas per eilutes, kol atsiras tuščia ląstelė su ciklu Do-Until svetainėje VBA pateikiami toliau.

Žingsniai:

  • Pirma, atidarykite "Visual Basic" redaktorius Kūrėjas skirtukas ir Įdėkite a Modulis kodo lange.
  • Tada, kopijuoti šį kodą ir įklijuokite į kodo langą.
 Sub DoUntilLoopThroughRowsUntilBlank() Range("B4").Select Do Until IsEmpty(ActiveCell) ActiveCell.Offset(1, 0).Select Loop End Sub 

Dabar jūsų kodas paruoštas paleisti.

  • Vėliau, Paleisti Rezultatas parodytas toliau pateiktame gif paveikslėlyje.

Paleidus makrokomandą, ji prasidėjo ciklas per visas eilutes lentelėje, o kai jis pasiekia tuščias langelis, langelis B8 , tai sustabdė iteraciją .

VBA kodo paaiškinimas

 Range("B4").Select 

Pasirinkite ląstelę, kurioje dirbsime.

 Do Until IsEmpty(ActiveCell) 

Pradeda ir tęsia ciklą, kol suranda tuščią langelį.

 ActiveCell.Offset(1, 0).Select Loop 

Kai eilutėje randamas tuščias langelis, jį pasirinkite ir sustabdykite iteraciją.

10. VBA makrokomandos, skirtos "Excel" eilutėms kartoti, kol atsiras kelios tuščios ląstelės

Ankstesniame skyriuje sužinojote, kaip sustabdyti ciklą, kai randamas tuščias langelis. Tačiau ką daryti, jei nenorite sustabdyti iteracijos, kol bus rasti ne vienas, o keli tušti langeliai.

Veiksmai, kuriuos reikia atlikti ciklas per eilutes, kol atsiras kelios tuščios ląstelės randami lentelėje su VBA Toliau pateikiami "Excel" pavyzdžiai.

Žingsniai:

  • Pirma, atidarykite "Visual Basic" redaktorius Kūrėjas skirtukas ir Įdėkite a Modulis kodo lange.
  • Tada, kopijuoti šį kodą ir įklijuokite į kodo langą.
 Sub LoopThroughRowsUntilMultipleBlank() Range("B4").Select Do Until IsEmpty(ActiveCell) And IsEmpty(ActiveCell.Offset(1, 0)) ActiveCell.Offset(2, 0).Select Loop End Sub 

Dabar jūsų kodas paruoštas paleisti.

  • Dabar, Paleisti makrokomandą ir žiūrėkite šį gif išvestį.

Paleidus makrokomandą, ji nesustojo ties pirmuoju tuščiu langeliu, langeliu B8. . Jis sustojo, kai rado du iš eilės esantys tušti langeliai ląstelėje B16 .

VBA kodo paaiškinimas

 Range("B4").Select 

Pasirinkite ląstelę, kurioje dirbsime.

 Do Until IsEmpty(ActiveCell) And IsEmpty(ActiveCell.Offset(1, 0)) 

Pradeda ir tęsia ciklą tol, kol randami du iš eilės tušti langeliai.

 ActiveCell.Offset(2, 0).Select Loop 

Kai randamos dvi iš eilės tuščios ląstelės, pasirinkite jas ir sustabdykite iteraciją.

11. Įterpti VBA, kad galėtumėte "Excel" programoje sudaryti ciklą per eilutes, sujungdami visus stulpelius, kol jie bus tušti

Šiame skyriuje bus parodyta, kaip ciklas per visas lentelės eilutes ir sujungia visus stulpelius iki tuščio langelio randama su VBA "Excel".

Sužinokime, kaip tai padaryti su VBA makrokomandą "Excel" programoje.

Žingsniai:

  • Iš pradžių atidarykite "Visual Basic" redaktorius Kūrėjas skirtukas ir Įdėkite a Modulis kodo lange.
  • Tada, kopijuoti šį kodą ir įklijuokite į kodo langą.
 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 

Dabar jūsų kodas paruoštas paleisti.

  • Vėliau, Paleisti makrokomandą ir pažiūrėkite, koks bus rezultatas, parodytą šiame gif paveikslėlyje.

Kaip matote iš aukščiau pateikto gifo, yra iššokantis langas MsgBox rodyti jums visų stulpelių, esančių kiekvienoje eilutėje, sugretintos vertės. iš "Excel" darbalapio lentelės. Tačiau tai sustojo, kai pasiekė tuščią langelį .

VBA kodo paaiškinimas

 Dim iSheet As Worksheet Dim iValue As Variant Dim iResult As String 

Apibrėžkite kintamuosius.

 Set iSheet = Sheets("ConcatenatingAllColUntilBlank") 

Nustatykite lapo, su kuriuo dirbsime, pavadinimą (" ConcatenatingAllColUntilBlank " yra darbaknygės lapo pavadinimas).

 iValue = Range("B4").CurrentRegion 

Apibrėžkite diapazoną, su kuriuo dirbsime.

 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 

Ši kodo dalis pradeda ciklą su masyvu. Ji tęsia ciklą tol, kol grąžina didžiausią masyvo indeksą ir pirmojo matmens apatinę ribą. Tada ji pradeda antrojo matmens apatinės ribos išskyrimo iteraciją. Po to ji perduoda visas išskirtas reikšmes į iRezultatas kintamąjį, sujungdamas juos ir gautą rezultatą įmesdamas į "MsgBox" langelį. Tai daroma tol, kol randamas tuščias langelis.

Išvada

Baigdamas norėčiau pasakyti, kad šis straipsnis parodė jums 11 veiksmingų metodų, kaip ciklas per lentelės eilutes "Excel" programoje su VBA makrokomandos . tikiuosi, kad šis straipsnis jums buvo labai naudingas. Drąsiai užduokite bet kokius su šia tema susijusius klausimus.

Hugh Westas yra labai patyręs Excel treneris ir analitikas, turintis daugiau nei 10 metų patirtį šioje srityje. Jis yra įgijęs apskaitos ir finansų bakalauro bei verslo administravimo magistro laipsnius. Hugh turi aistrą mokymui ir sukūrė unikalų mokymo metodą, kurį lengva sekti ir suprasti. Jo ekspertinės žinios apie „Excel“ padėjo tūkstančiams studentų ir specialistų visame pasaulyje tobulinti savo įgūdžius ir tobulėti savo karjeroje. Savo tinklaraštyje Hugh dalijasi savo žiniomis su pasauliu, siūlydamas nemokamus „Excel“ vadovėlius ir internetinius mokymus, kad padėtų asmenims ir įmonėms išnaudoti visą savo potencialą.