„Excel VBA“ kilpos: toliau, darykite, darykite iki, kiekvienam (su pavyzdžiais)

Norėdami išnaudoti visas „Excel“ ir VBA galimybes, turite žinoti, kaip efektyviai naudoti kilpas.

Naudojant VBA, kilpos leidžia peržiūrėti objektų/verčių rinkinį ir jį analizuoti po vieną. Taip pat galite atlikti konkrečias kiekvienos kilpos užduotis.

Čia yra paprastas VBA kilpų naudojimo „Excel“ pavyzdys.

Tarkime, kad turite duomenų rinkinį ir norite paryškinti visas lygių eilučių ląsteles. Galite naudoti VBA kilpą, norėdami pereiti per diapazoną ir išanalizuoti kiekvieną langelio eilutės numerį. Jei pasirodo tolygus, jūs suteikiate jam spalvą, kitu atveju paliekate ją tokią, kokia yra.

Žinoma, tai labai paprasta pakartoti naudojant „Excel VBA“ (taip pat galite tai padaryti naudodami sąlyginį formatavimą).

Realiame gyvenime galite padaryti daug daugiau naudodami „Excel“ VBA kilpas, kurios gali padėti automatizuoti užduotis.

Štai keletas praktinių pavyzdžių, kai VBA kilpos gali būti naudingos:

  • Keliauti per langelių diapazoną ir analizuoti kiekvieną langelį (paryškinti langelius su konkrečiu tekstu).
  • Peržiūrėkite visus darbalapius ir darykite ką nors su kiekvienu (pvz., Apsaugoti/atšaukti apsaugą).
  • Peržiūrėkite visas atidarytas darbaknyges (ir išsaugokite kiekvieną darbaknygę arba uždarykite visas, išskyrus aktyvią darbaknygę).
  • Peržiūrėkite visus langelio simbolius (ir ištraukite skaitinę dalį iš eilutės).
  • Peržiūrėkite visas masyvo reikšmes.
  • Peržiūrėkite visas diagramas/objektus (ir nurodykite kraštą arba pakeiskite fono spalvą).

Dabar, norėdami geriausiai panaudoti „Excel VBA“ kilpas, turite žinoti apie skirtingas rūšis ir teisingą jų sintaksę.

Šioje pamokoje aš parodysiu skirtingų tipų „Excel VBA“ kilpas ir pateiksiu keletą kiekvienos kilpos pavyzdžių

Pastaba: tai bus didžiulė pamoka, kurioje pabandysiu išsamiai apžvelgti kiekvieną VBA kilpą. Rekomenduoju pažymėti šį puslapį, kad galėtumėte pasinaudoti ateityje.

Jei jus domina lengvas VBA mokymasis, patikrinkite mano Internetinis „Excel VBA“ mokymas.

Dėl kitos kilpos

Ciklas „Kitas“ leidžia nurodytą skaičių kartų peržiūrėti kodo bloką.

Pavyzdžiui, jei paprašysiu rankiniu būdu pridėti sveikus skaičius nuo 1 iki 10, pridėsite pirmuosius du skaičius, tada prie rezultato pridėsite trečiąjį skaičių, tada prie rezultato pridėsite ketvirtąjį skaičių ir taip toliau …

Ar ne?

Ta pati logika naudojama „VBA“ cikle „Kitas“.

Jūs nurodote, kiek kartų ciklas turi būti paleistas, taip pat nurodote, ką norite, kad kodas atliktų kiekvieną kartą, kai ciklas paleidžiamas.

Žemiau yra kilpos „For Next“ sintaksė:

Skaitliukui = nuo pradžios iki pabaigos [žingsnio reikšmė] [vykdytinas kodo blokas] Kitas [skaitiklis]

„For Next“ cikle galite naudoti skaitiklį (arba bet kurį kintamąjį), kuris bus naudojamas ciklui paleisti. Šis skaitiklis leidžia paleisti šią kilpą reikiamą skaičių kartų.

Pavyzdžiui, jei noriu pridėti pirmuosius 10 teigiamų sveikųjų skaičių, mano skaitiklis bus nuo 1 iki 10.

Pažvelkime į keletą pavyzdžių, kad geriau suprastume, kaip veikia „For Next“ ciklas.

1 pavyzdys - pirmųjų 10 teigiamų sveikųjų skaičių pridėjimas

Žemiau yra kodas, kuris pridės pirmuosius 10 teigiamų sveikųjų skaičių naudodami ciklą „Kitas“.

Tada jis parodys pranešimų laukelį, kuriame bus nurodyta šių skaičių suma.

Sub AddNumbers () Dim Iš viso kaip sveikasis skaičius Skaičiuoti kaip sveikasis skaičius Iš viso = 0 Skaičiuoti = 1 iki 10 Iš viso = Iš viso + Skaičiuoti Kitas skaičius MsgBox Iš viso pabaigos

Šiame kode, prieš patekimą į „For Next“ ciklą, „Total“ vertė yra nustatyta į 0.

Kai jis patenka į kilpą, jis turi bendrą vertę po kiekvienos kilpos. Taigi po pirmosios kilpos, kai skaitiklis yra 1, „bendra“ vertė tampa 1, o po antrosios - 3 (1+2) ir pan.

Ir galiausiai, kai ciklas baigiasi, kintamasis „Iš viso“ turi pirmųjų 10 teigiamų sveikųjų skaičių sumą.

Tada „MsgBox“ tiesiog parodo rezultatą pranešimų laukelyje.

2 pavyzdys - pirmųjų 5 lyginių teigiamų sveikųjų skaičių pridėjimas

Norėdami susumuoti pirmuosius penkis lygius teigiamus sveikuosius skaičius (t. Y. 2,4,6,8 ir 10), jums reikia panašaus kodo su sąlyga, kad būtų atsižvelgiama tik į lyginius skaičius ir nepaisoma nelyginių skaičių.

Čia yra kodas, kuris tai padarys:

Sub AddEvenNumbers () Dim Iš viso kaip sveikasis skaičius Skaičiuoti kaip sveikasis skaičius Iš viso = 0 Skaičiuoti = 2 iki 10 2 veiksmas Iš viso = Iš viso + Skaičiuoti Kitas skaičius MsgBox Iš viso pabaigos Sub

Atminkite, kad skaičiavimo vertę pradėjome nuo 2, taip pat naudojome „2 žingsnis‘.

Kai naudojate '2 žingsnis', jis nurodo kodui kiekvieną kartą paleidžiant kilpą padidinti „Count“ reikšmę 2.

Taigi skaičiavimo vertė prasideda nuo 2, o tada, kai atsiranda ciklas, tampa 4, 6, 8 ir 10.

PASTABA: Kitas būdas tai padaryti gali būti paleisti kilpą nuo 1 iki 10 ir ciklo viduje patikrinti, ar skaičius yra lyginis ar nelyginis. Tačiau šiuo atveju „Step“ naudojimas yra veiksmingesnis būdas, nes nereikia ciklo paleisti 10 kartų, o tik 5 kartus.

Žingsnio reikšmė taip pat gali būti neigiama. Tokiu atveju skaitiklis prasideda nuo didesnės vertės ir nuolat mažėja pagal nurodytą žingsnio vertę.

3 pavyzdys. Serijos numerio įvedimas į pasirinktas ląsteles

Taip pat galite naudoti ciklą „Kitas“, kad peržiūrėtumėte objektų rinkinį (pvz., Langelius, darbalapius ar darbaknyges),

Štai pavyzdys, kuris greitai įveda serijos numerius į visas pasirinktas ląsteles.

Sub EnterSerialNumber () Dim Rng kaip diapazonas Dim skaitiklis kaip sveikasis skaičius Dim RowCount kaip sveikasis skaičius Rng = Pasirinkimas RowCount = Rng.Rows.Count For Counter = 1 iki RowCount ActiveCell.Offset (skaitiklis - 1, 0) .Value = Skaitliukas Kitas skaitiklio galas Sub

Aukščiau pateiktas kodas pirmiausia suskaičiuoja pasirinktų eilučių skaičių ir tada priskiria šią vertę kintamajam RowCount. Tada paleidžiame ciklą nuo „1 iki„ RowCount “.

Taip pat atkreipkite dėmesį, kad kadangi pasirinkimas gali būti bet koks eilučių skaičius, mes nustatėme kintamąjį Rng į pasirinkimą (su eilute „Nustatyti Rng = pasirinkimas“). Dabar galime naudoti kintamąjį „Rng“, kad nurodytume pasirinkimą mūsų kode.

4 pavyzdys. Apsaugokite visus aktyvios darbaknygės darbalapius

Galite naudoti ciklą „Tolesniam“, kad peržiūrėtumėte visus aktyvios darbaknygės darbalapius ir apsaugotumėte (arba apsaugotumėte) kiekvieną darbalapį.

Žemiau yra kodas, kuris tai padarys:

Sub ProtectWorksheets () Dim i As Integer For i = 1 ActiveWorkbook.

Aukščiau pateiktas kodas skaičiuoja lapų skaičių naudojant „ActiveWorkbook.Worksheets.Count“. Tai VBA nurodo, kiek kartų ciklas turi būti paleistas.

Kiekvienu atveju jis nurodo „Ith“ darbaknygę (naudojant darbalapius (i)) ir ją apsaugo.

Tą patį kodą galite naudoti ir darbalapių apsaugai panaikinti. Tiesiog pakeiskite eilutę Darbo lapai (i). Apsaugoti į Darbo lapai (i). „UnProtect“.

Įdėtos „For Next“ kilpos

Jei norite atlikti sudėtingesnę „Excel“ automatizavimą, galite naudoti įterptas kilpas „Kitas“. Įdėta kilpa „For Next“ reikštų, kad cikle „For Next“ yra „For Next“ kilpa.

Leiskite man parodyti, kaip tai naudoti, naudojant pavyzdį.

Tarkime, kad mano sistemoje yra atidarytos 5 darbaknygės ir noriu apsaugoti visus visų šių darbo knygų darbalapius.

Žemiau yra kodas, kuris tai padarys:

Sub ProtectWorksheets () Dim i As Integer Dim j As Integer For i = 1 To Workbooks. Count for j = 1 To Workbooks (i). Workesheets. Count Workbooks (i). Workesheets (j). Protect next Next Next Next

Aukščiau yra įdėta „For Next“ kilpa, nes mes naudojome vieną „For Next“ kilpą kitoje.

„EXIT For“ teiginiai „For Next Loops“

„Exit For“ teiginys leidžia visiškai išeiti iš ciklo „For Next“.

Jį galite naudoti tais atvejais, kai norite, kad ciklas „Kitas“ pasibaigtų, kai įvykdoma tam tikra sąlyga.

Paimkime pavyzdį, kai A stulpelyje yra skaičių rinkinys ir visus neigiamus skaičius norite paryškinti raudonu šriftu. Šiuo atveju turime išanalizuoti kiekvieną langelį pagal jo vertę ir atitinkamai pakeisti šrifto spalvą.

Tačiau norėdami padaryti kodą efektyvesnį, pirmiausia galime patikrinti, ar sąraše yra neigiamų verčių. Jei nėra neigiamų verčių, galime naudoti teiginį „Išeiti“, kad paprasčiausiai išeitų iš kodo.

Žemiau yra kodas, kuris tai daro:

Sub HghlightNegative () Dim Rng kaip diapazono rinkinys Rng = Diapazonas ("A1", Diapazonas ("A1"). Pabaiga (xlDown)) Skaitliukas = Rng. Skaičius i = 1 Į skaitiklį, jei darbalapis Funkcija.Min (Rng)> = 0 Tada išeikite, jei Rng (i). Vertė <0 Tada Rng (i). Šriftas.Color = vbRed Next i End Sub

Kai naudojate sakinį „Išeiti“ į įterptą „For Next“ kilpą, jis išeis iš ciklo, kuriame jis vykdomas, ir toliau vykdys kitą kodo eilutę po ciklo „For Next“.

Pavyzdžiui, žemiau esančiame kode teiginys „Išeiti“ išves jus iš vidinės kilpos, tačiau išorinė kilpa ir toliau veiks.

Sub SampleCode () i = 1–10, jei j = 1–10 Išeiti kitam J Kitas i Pabaiga

Atlikite ciklą

Ciklas „Daryk“ leidžia patikrinti būklę ir paleisti ciklą, kol ši sąlyga yra įvykdyta (arba yra TIKRA).

Dviejų ciklų sintaksė yra dviejų tipų.

Atlikite [Kol sąlyga] [Kodo blokas vykdymui] ciklas

ir

Atlikite [kodo bloką vykdymui] ciklą [kol sąlyga]

Skirtumas tarp šių dviejų dalykų yra tas, kad pirmuoju atveju, prieš atliekant bet kokį kodo bloką, pirmiausia tikrinama sąlyga „When“, o antruoju atveju pirmiausia vykdomas kodo blokas, o tada tikrinama sąlyga „While“.

Tai reiškia, kad jei sąlyga „Nors“ yra klaidinga, yra abu atvejai, kodas vis tiek bus paleistas bent vieną kartą antruoju atveju (nes sąlyga „Kol“ tikrinama po to, kai kodas buvo įvykdytas vieną kartą).

Dabar pažiūrėkime keletą „Do while“ kilpų naudojimo VBA pavyzdžių.

1 pavyzdys - pridėkite pirmuosius 10 teigiamų sveikųjų skaičių naudodami VBA

Tarkime, kad norite pridėti pirmuosius dešimt teigiamų sveikųjų skaičių naudodami VBA ciklą „Do Do“.

Norėdami tai padaryti, galite naudoti ciklą „Do Do“, kol kitas skaičius bus mažesnis arba lygus 10. Kai tik skaičius bus didesnis nei 1o, ciklas sustos.

Čia yra VBA kodas, kuris paleis šią „Do while“ kilpą ir parodys rezultatą pranešimų laukelyje.

Sub AddFirst10PositiveIntegers () Dim i As Integer i = 1 Do while i <= 10 Result = Result + i i = i + 1 Loop MsgBox Result End Sub

Pirmiau minėta kilpa toliau veikia, kol „i“ reikšmė tampa 11. Kai tik ji tampa 11, ciklas baigiasi (kai sąlyga „Kam“ tampa klaidinga).

Cikle mes panaudojome rezultato kintamąjį, kuris turi galutinę vertę Kai ciklas bus baigtas, pranešimų laukelyje bus rodoma kintamojo „Rezultatas“ vertė.

2 pavyzdys - įveskite einamojo mėnesio datas

Tarkime, kad norite įvesti visas dabartinio mėnesio datas į darbalapio stulpelį.

Tai galite padaryti naudodami šį ciklo „Do while“ kodą:

Sub EnterCurrentMonthDates () Dim CMDate kaip data Dim i As Integer i = 0 CMDate = DateSerial (metai (data), mėnuo (data), 1) daryti, kol mėnuo (CMDate) = mėnesio (datos) intervalas ("A1"). (i, 0) = CMDate i = i + 1 CMDate = CMDate + 1 Loop End Sub

Pirmiau pateiktas kodas įves visas datas pirmajame darbalapio stulpelyje (pradedant nuo A1). Kilpos tęsiasi tol, kol kintamojo „CMDate“ mėnesio vertė sutampa su einamojo mėnesio.

Išeiti iš pareiškimo

Norėdami išeiti iš ciklo, galite naudoti teiginį „Exit Do“. Kai tik kodas įvykdo „Exit Do“ eilutę, jis išeina iš ciklo „Do Do“ ir perduoda valdymą kitai eilutei iškart po ciklo.

Pavyzdžiui, jei norite įvesti tik pirmąsias 10 datų, galite išeiti iš ciklo, kai tik įvedamos pirmosios 10 datų.

Žemiau pateiktas kodas tai padarys:

Sub EnterCurrentMonthDates () Dim CMDate kaip data Dim i As Integer i = 0 CMDate = DateSerial (metai (data), mėnuo (data), 1) daryti, kol mėnuo (CMDate) = mėnesio (datos) intervalas ("A1"). (i, 0) = CMDate i = i + 1 Jei i> = 10, tada išeikite Ar CMDate = CMDate + 1 ciklo pabaigos sub

Pirmiau pateiktame kode IF teiginys naudojamas patikrinti, ar i reikšmė yra didesnė nei 10, ar ne. Kai tik „i“ reikšmė tampa 10, „Exit Do“ sakinys vykdomas ir ciklas baigiasi.

Darykite iki ciklo

„Daryti iki“ kilpos yra labai panašios į „Do Do“ kilpas.

Dalyje „Daryk“ ciklas tęsiasi, kol bus įvykdyta nurodyta sąlyga, o „Daryti iki“ - ciklas, kol bus įvykdyta nurodyta sąlyga.

Yra dvi sintaksės rūšys „Iki kol“.

Atlikite [iki sąlygos] [vykdomas kodo blokas]

ir

Atlikti [kodo bloką vykdyti] ciklą [iki sąlygos]

Skirtumas tarp šių dviejų yra tas, kad pirmuoju atveju prieš vykdant bet kokį kodo bloką pirmiausia patikrinama sąlyga „Iki“, o antruoju atveju - kodo blokas, o tada tikrinama sąlyga „Iki“.

Tai reiškia, kad jei sąlyga „Iki“ yra TRUE, abu atvejai, kodas vis tiek bus paleistas bent kartą antruoju atveju (nes „iki“ sąlyga tikrinama po to, kai kodas buvo įvykdytas vieną kartą).

Dabar pažiūrėkime keletą „Do Before“ kilpų naudojimo VBA pavyzdžių.

Pastaba: visi „Iki“ pavyzdžiai yra tokie patys kaip „Daryti“. Jie buvo pakeisti, kad parodytų, kaip veikia ciklas „Iki“.

1 pavyzdys - pridėkite pirmuosius 10 teigiamų sveikųjų skaičių naudodami VBA

Tarkime, kad norite pridėti pirmuosius dešimt teigiamų sveikųjų skaičių naudodami ciklą „Iki“ VBA.

Norėdami tai padaryti, turite paleisti kilpą, kol kitas skaičius bus mažesnis arba lygus 10. Kai tik skaičius bus didesnis nei 1o, jūsų ciklas sustos.

Čia yra VBA kodas, kuris paleis šią kilpą ir parodys rezultatą pranešimų laukelyje.

Sub AddFirst10PositiveIntegers () Dim i As Integer i = 1 Ar iki i> 10 Result = Result + i i = i + 1 Loop MsgBox Result End Sub

Pirmiau minėta kilpa tęsiasi tol, kol „i“ reikšmė tampa 11. Kai tik ji tampa 11, ciklas baigiasi (kai sąlyga „Iki“ tampa tiesa).

2 pavyzdys - įveskite dabartinio mėnesio datas

Tarkime, kad norite įvesti visas dabartinio mėnesio datas į darbalapio stulpelį.

Tai galite padaryti naudodami šį ciklo kodą „Iki“:

Sub EnterCurrentMonthDates () Dim CMDate kaip data Dim i As Integer i = 0 CMDate = DateSerial (metai (data), mėnuo (data), 1) iki mėnesio (CMDate) mėnesio (datos) diapazonas ("A1"). i, 0) = CMDate i = i + 1 CMDate = CMDate + 1 Loop End Sub

Pirmiau pateiktas kodas įves visas datas pirmajame darbalapio stulpelyje (pradedant nuo A1). Ciklas tęsiasi tol, kol kintamos CMDate mėnesis nėra lygus einamojo mėnesio mėnesiui.

Išeiti iš pareiškimo

Norėdami išeiti iš ciklo, galite naudoti teiginį „Išeiti“.

Kai tik kodas įvykdo eilutę „Išeiti“, jis išeina iš ciklo „Iki“ ir perduoda valdiklį kitai eilutei iškart po ciklo.

Pavyzdžiui, jei norite įvesti tik pirmąsias 10 datų, galite išeiti iš ciklo, kai tik įvedamos pirmosios 10 datų.

Žemiau pateiktas kodas tai padarys:

Sub EnterCurrentMonthDates () Dim CMDate kaip data Dim i As Integer i = 0 CMDate = DateSerial (metai (data), mėnuo (data), 1) iki mėnesio (CMDate) mėnesio (datos) diapazonas ("A1"). i, 0) = CMDate i = i + 1 Jei i> = 10, tada išeikite Ar CMDate = CMDate + 1 ciklo pabaigos sub

Pirmiau pateiktame kode, kai tik „i“ reikšmė tampa 10, įvykdomas išėjimas „Do“ ir ciklas baigiasi.

Kiekvienam

VBA galite peržiūrėti kolekcijų rinkinį naudodami ciklą „Kiekvienam“.

Štai keletas „Excel VBA“ kolekcijų pavyzdžių:

  • Visų atidarytų darbaknygių rinkinys.
  • Visų darbaknygėje esančių darbalapių rinkinys.
  • Visų pasirinktų langelių ląstelių rinkinys.
  • Visų darbaknygėje esančių diagramų ar formų rinkinys.

Naudodami kilpą „Kiekvienam“ galite pereiti per visus kolekcijos objektus ir atlikti tam tikrus veiksmus.

Pvz., Galite peržiūrėti visus darbaknygės darbalapius ir juos apsaugoti, arba galite pereiti per visas pasirinktos ląstelės ir pakeisti formatą.

Naudodami kilpą „Kiekvienam“ (dar vadinamą kilpa „Kiekvienam kitam“) jums nereikia žinoti, kiek objektų yra kolekcijoje.

„Kiekvienam“ kilpa automatiškai pereitų per kiekvieną objektą ir atliktų nurodytą veiksmą. Pvz., Jei norite apsaugoti visus darbaknygės darbalapius, kodas būtų tas pats, nesvarbu, ar turite darbaknygę su 3 darbalapiais, ar 30 darbalapių.

Čia yra „Excel VBA“ ciklo „Kiekvienai kitai“ sintaksė.

Kiekvienam kolekcijos elementui [Vykdomas kodo blokas] Kitas [elementas]

Dabar pažiūrėkime keletą pavyzdžių, kaip naudoti „Excel“ kiekvienai kilpai.

1 pavyzdys. Peržiūrėkite visas darbaknygės darbalapius (ir apsaugokite)

Tarkime, kad turite darbo knygą, kurioje norite apsaugoti visus darbalapius.

Žemiau „Kiekvienos kitos“ kilpa gali tai padaryti lengvai:

Sub ProtectSheets () Dim ws kaip darbo lapas kiekvienam ws ActiveWorkbook. Darbo lapai ws. Protect next ws End Sub

Pirmiau pateiktame kode mes nustatėme kintamąjį „ws“ kaip darbalapio objektą. Tai sako VBA, kad „ws“ kode turėtų būti aiškinamas kaip darbalapio objektas.

Dabar mes naudojame sakinį „Už kiekvieną“, kad pereitume kiekvieną „ws“ (kuris yra darbalapio objektas), surinkdamas visas aktyvios darbaknygės darbalapius (pateiktus „ActiveWorkbook.Worksheets“).

Atminkite, kad skirtingai nuo kitų kilpų, kuriose bandėme apsaugoti visus darbaknygės darbalapius, čia mums nereikia jaudintis, kiek darbaknygėje yra darbalapių.

Mums nereikia jų skaičiuoti, kad paleistume ciklą. Už kiekvieną kilpą užtikrina, kad visi objektai būtų analizuojami po vieną.

2 pavyzdys. Peržiūrėkite visas atidarytas darbaknyges (ir išsaugokite viską)

Jei vienu metu dirbate su keliomis darbaknygėmis, gali praversti galimybė iš karto išsaugoti visas šias darbaknyges.

Žemiau pateiktas VBA kodas tai gali padaryti už mus:

Sub SaveAllWorkbooks () Dim wb kaip darbo knyga kiekvienai wb darbaknygėms wb. Išsaugoti kitą wb End sub

Atminkite, kad naudojant šį kodą negaunate raginimo, kad darbaknygė būtų išsaugota konkrečioje vietoje (jei pirmą kartą išsaugote).

Jis išsaugo jį numatytame aplanke (mano atveju tai buvo aplankas „Dokumentai“). Šis kodas geriausiai veikia, kai šie failai jau yra išsaugoti, o jūs darote pakeitimus ir norite greitai išsaugoti visas darbaknyges.

3 pavyzdys - pereikite prie visų pasirinkto langelių (paryškinkite neigiamas vertes)

Naudodami ciklą „Kiekvienam“ galite pervesti visas langelius tam tikrame diapazone arba pasirinktame diapazone.

Tai gali būti naudinga, kai norite išanalizuoti kiekvieną langelį ir pagal jį atlikti veiksmą.

Pavyzdžiui, žemiau yra kodas, kuris eis per visas pasirinktas ląsteles ir pakeis langelių spalvą su neigiamomis reikšmėmis į raudoną.

Sub HighlightNegativeCells () Dim Cll kaip diapazonas kiekvienam pasirinktam Cll, jei Cll.Value <0 Tada Cll.Interior.Color = vbRed Red End If Next Cll End Sub

(Atkreipkite dėmesį, kad naudoju Cll kaip trumpą langelio kintamojo pavadinimą. Patartina nenaudoti objektų pavadinimų, tokių kaip Lakštai ar Diapazonas kaip kintamųjų pavadinimai)

Pirmiau pateiktame kode ciklas „Kiekvienam kitam“ eina per pasirinkto langelio rinkinį. IF teiginys naudojamas nustatyti, ar langelio vertė yra neigiama, ar ne. Jei taip, ląstelė gauna raudoną vidinę spalvą, kitaip ji pereina į kitą langelį.

Jei neturite pasirinkimo ir norite, kad VBA pasirinktų visas užpildytas stulpelio langelius, pradedant nuo konkrečios ląstelės (kaip ir mes naudojame „Control“ + „Shift“ + rodyklės žemyn klavišus, kad pasirinktume visas užpildytas langelius), galite naudokite žemiau esantį kodą:

Sub HighlightNegativeCells () Dim Cll kaip diapazonas Dim Rng As Range Set Rng = Diapazonas ("A1", Diapazonas ("A1"). Pabaiga (xlDown)) Kiekvienam Cll In Rng Jei Cll.Value <0 Tada Cll.Interior.Color = vbRed End, jei kitas Cll End Sub

Pirmiau pateiktame pavyzdyje nesvarbu, kiek užpildytų ląstelių yra. Jis prasidės nuo langelio A1 ir išanalizuos visas gretimas užpildytas stulpelio ląsteles.

Jums taip pat nereikia pasirinkti langelio A1. Galite pasirinkti bet kurį tolimą langelį ir, kai kodas bus paleistas, jis vis tiek atsižvelgs į visas A stulpelio ląsteles (pradedant nuo A1) ir nuspalvins neigiamas ląsteles.

Pareiškimas „Išeiti“

Norėdami išeiti iš ciklo, galite naudoti sakinį „Išeiti“ cikle „Kiekvienam kitam“. Paprastai tai daroma, jei įvykdoma tam tikra sąlyga.

Pavyzdžiui, 3 pavyzdyje, kai mes einame per langelių rinkinį, gali būti efektyviau patikrinti, ar yra neigiamų verčių, ar ne. Jei nėra neigiamų verčių, galime tiesiog išeiti iš ciklo ir sutaupyti šiek tiek VBA apdorojimo laiko.

Žemiau yra VBA kodas, kuris tai padarys:

Sub HighlightNegativeCells () Dim Cll kaip diapazonas kiekvienam pasirinktam „Cll“, jei „WorkheetFunction.Min“ (pasirinkimas)> = 0 Tada išeikite, jei „Cll.Value“ <0 Tada „Cll.Interior.Color = vbRed Red End If Next Cll End Sub“

Kur įdėti VBA kodą

Įdomu, kur „Excel“ darbaknygėje patenka VBA kodas?

„Excel“ turi VBA vidinę programą, vadinamą VBA redaktoriumi. Turite nukopijuoti ir įklijuoti kodą „VB Editor“ modulio kodo lange.

Štai žingsniai, kaip tai padaryti:

  1. Eikite į skirtuką Kūrėjas.
  2. Spustelėkite „Visual Basic“ parinktį. Tai atidarys VB redaktorių užpakalinėje sistemoje.
  3. VB redaktoriaus „Project Explorer“ srityje dešiniuoju pelės mygtuku spustelėkite bet kurį darbaknygės objektą, į kurį norite įterpti kodą. Jei nematote „Project Explorer“, eikite į skirtuką „View“ ir spustelėkite „Project Explorer“.
  4. Eikite į „Įterpti“ ir spustelėkite „Modulis“. Tai įterps jūsų darbo knygos modulio objektą.
  5. Nukopijuokite ir įklijuokite kodą modulio lange.

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave