Turinys
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.xlsm11 "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 iš 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 iš 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 iš 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 iš 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 iš 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 iš 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 iš 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 iš 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 iš 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 iš 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 iš 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 iš 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 iš 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.