7 „Microsoft Excel VBA“ ciklų pavyzdžiai

Anonim

Jei rašote VBA programą ir norite tą pačią užduotį atlikti kelis kartus, tai galite padaryti naudodami ciklų VBA. VBA yra nuosekli programavimo kalba. Kiekviena kodo eilutė vykdoma iš viršaus į apačią, kol nebelieka skaitomų kodo eilučių. Jei norite grįžti ir atlikti užduotį, turite priversti naudoti makro kodą. Jūs gaunate rezultatus naudodami kilpą.

„For Loop“ VBA yra vienas iš labiausiai paplitusių kilpų tipų. „For“ kilpa turi dvi formas: „For Next“ ir „For Every In Next“. Ciklas „For“ paprastai naudojamas paeiliui perkelti elementų ar skaičių sąrašą. Norėdami užbaigti ciklą „For“ bet kuriuo konkrečiu momentu, galime naudoti išėjimo sakinį. „Loop“ suksis ratu, kol atitiks galutinę sąlygą. Kai bus įvykdyta galutinė sąlyga, programavimo srautas tęsis žemyn, natūralia kryptimi.

Ciklas „For… Next“ turi tokią sintaksę: Skaitliui = start_counter To end_counter 'Darykite ką nors čia (jūsų kodas) Kitas skaitiklis 

Mes iš tikrųjų kuriame ciklą, kuriame naudojamas kintamasis skaitiklis kaip kilpos „laiko laikytojas“. Mes nustatėme vertę, lygią start_counter ciklo pradžioje ir padidinkite ją 1 kiekvienos kilpos metu, kol ji atitinka pabaigos sąlygą. Ciklas bus vykdomas iki to laiko, kai reikšmė skaitiklis tampa lygus end_counter. Ciklas vykdomas paskutinį kartą, kai abi aukščiau pateiktos vertės sutampa ir tada ciklas sustoja.

Visa tai, kas išdėstyta aukščiau, kai kuriems žmonėms gali būti paini, todėl pradėkime ir pradėkime mokytis „For Loop in Excel“ su keliais pavyzdžiais.

  • Sukurkite naują „Excel“ darbaknygę, tada išsaugokite ją su plėtiniu .xlsm
  • Norėdami paleisti „Visual Basic“ redaktoriaus ekraną, naudokite ALT + F11
  • Įdėkite naują modulį
  • Nukopijuokite žemiau esantį kodą į VB standartinį modulį

1 kilpa (rodomas numeris su „msgbox“)

Sub ciklas1 () Dim StartNumber kaip sveikasis skaičius Dim EndNumber As Integer EndNumber = 5 For StartNumber = 1 to EndNumber 

Kodo paaiškinimas:

  • VBA kodui reikia priskirti reikšmę „StartNumber“, kur „EndNumber“ yra kintamieji, kurie kaip ciklo pradžios taškas deklaruojami kaip sveikieji skaičiai
  • Šios vertės gali būti bet koks skaičius, o „EndNumber“ yra 5
  • StartNumber pradedamas nuo 1
  • StartNumber = 1 iki EndNumber reiškia, kad kodas prasidės nuo 1 (StartNumber) iki 5 (EndNumber)
  • „MsgBox StartNumber &“ yra „&“ Jūsų pradžios numeris “parodys šį pranešimų laukelį

2 kilpa (užpildymo vertės)

„Sub Loop2“ () „Užpildo langelius A1: A56 su X reikšmėmis kilpomis“ --- Komentaras „Padidinkite X reikšmę 1 kiekvienoje kilpoje“ --- Komentaras Dim X kaip sveikasis skaičius X = 1–56 diapazonas („A "& X). Vertė = X Kitas X pabaiga 

Kodo paaiškinimas:

  • Mes priskyrėme X kaip sveiką skaičių
  • X = nuo 1 iki 56; tai prasidės nuo 1 ir tęsis iki 56, kiekvieną kartą didinant po 1
  • Diapazonas ("A" ir X) .Vertybė = X; šioje eilutėje bus saugoma X vertė ir ji pereis į diapazoną nuo A1 iki A56

„Loop3“ (užpildykite langelius fono spalva)

„Sub Loop3 ()“ „Užpildo langelius B1: B56 56 fono spalvomis“ --- Komentaras Dim X kaip sveikasis skaičius X = 1–56 diapazonas („B“ ir X). Pasirinkite su pasirinkimu.Interior .ColorIndex = X .Pattern = xlSolid End su Next X End Sub 

Kodo paaiškinimas:

  • Mes priskyrėme X kaip sveiką skaičių
  • Jei X = nuo 1 iki 56, prasidės 1 ir tęsis iki 56, kiekvieną kartą didinant po 1
  • Diapazonas („B“ ir X). Pasirinkite; šioje eilutėje bus saugoma X vertė ir pažymimas langelis B1 iki B56
  • Kitos keturios eilutės, t. 2 priklauso baltai spalvai; 3 už raudoną ir pan

4 kilpa (užpildykite reikšmes 2 žingsniais)

Pagal numatytuosius nustatymus žingsnio reikšmė yra 1 į priekį, tačiau ją galima nustatyti daugiau nei 1.

Sub Loop4 () „Kas antrą langelį iš C1: C50 užpildo X reikšmėmis“ --- Komentaras Dim X kaip sveikasis skaičius X = 1–50 2 veiksmo diapazonas („C“ ir X). Vertė = X Kitas X pabaiga 

Kodo paaiškinimas:

  • Mes priskyrėme X kaip sveiką skaičių
  • X = nuo 1 iki 50 2 žingsnis; tai prasidės nuo 1 iki X iki 50, kiekvieną kartą didinant po 2
  • Diapazonas („C“ ir X) .Vertybė = X; šioje eilutėje bus saugoma X vertė ir ji pereis į diapazoną nuo C1 iki C50

5 kilpa (VBA atvirkštinei kilpai su STEP instrukcija)

Nebūtina, kad ciklo „For“ skaitiklis tik pereitų nuo mažų prie didesnių verčių; vietoj to, ciklas gali veikti atgal, t.y. nuo aukštų iki žemesnių verčių.

Nors žingsnio reikšmė pagal numatytuosius nustatymus yra 1 į priekį, ją galima nustatyti atvirkštine tvarka.

„Sub Loop5“ () „Užpildo langelius iš D1: D50 su X reikšmėmis“ --- Komentaras „Šiuo atveju X sumažėja 1“ --- Komentaras Dim X kaip sveikasis skaičius, eilutė kaip sveikasis eilutė = 1 X = 50 iki 0 -1 veiksmas Diapazonas („D“ ir eilutė). Vertė = X eilutė = eilutė + 1 Kitas X pabaiga 

Kodo paaiškinimas:

  • „X & Row“ priskyrėme sveikam skaičiui
  • Eilutėje yra 1 vertė
  • X = 50–0 -1 žingsnis; tai prasidės nuo 50, sumažės 1 iš X iki 0
  • Diapazonas („D“ ir eilutė) .Vertybė = X; šioje eilutėje bus saugoma X vertė ir ji pereis į diapazoną nuo D1 iki D50

6 kilpa (užpildo kas antrą langelį atvirkščiai STEP-2)

Aukščiau pateiktame pavyzdyje „Ciklas“ galime naudoti „Step“ ir užsakymą, kad pamatytume, ar „For“ kilpa veikia pirmyn ar atgal.

„Sub Loop6“ () „Užpildo kiekvieną antrą langelį iš E1: E100 su X reikšmėmis“ --- Komentaras „Šiuo atveju X sumažėja 2“ --- Komentaras „Dim X“ kaip sveikasis skaičius, eilutė kaip sveikasis eilutė = 1 „X“ = 100 Iki 0 -2 veiksmas Diapazonas („E“ ir eilutė). Vertė = X eilutė = eilutė + 2 Kitas X pabaiga 

Kodo paaiškinimas:

  • „X & Row“ priskyrėme sveikam skaičiui
  • Eilutėje yra 1 vertė
  • Jei X = 100–0, 2 žingsnis; tai prasidės nuo 100 ir sumažės 2 x X iki 0
  • Diapazonas („E“ ir eilutė) .Vertybė = X; šioje eilutėje bus saugoma X vertė ir ji pereis į diapazoną nuo E1 iki E100

7 kilpa (ciklui su IF sąlyga: užpildo ląsteles pradedant nuo konkrečios ląstelės)

Tai užpildys langelius iš ląstelės F11 su reikšme 11, kol X atitiks IF sąlygą

Sub ciklas 7 () 'Pradeda pildyti langelius F11: F100 su X reikšmėmis' --- Komentaras 'Tai išeis iš ciklo po 50' --- Komentaras Dim X kaip sveikasis skaičius X = 11-100 diapazonas ("F") & X). Vertė = X Jei X = 50, tada „MsgBox“ („Bye Bye“) išeina pabaigai, jei kita X pabaiga 

Kodo paaiškinimas:

  • Mes priskyrėme X kaip sveiką skaičių
  • X = nuo 11 iki 100; prasidės nuo 11, didinant po 1 x, kol sąlyga bus įvykdyta
  • Diapazonas („F“ ir X) .Vertybė = X; ši eilutė išsaugos X reikšmę ir pereis į diapazoną F11, kol sąlyga bus įvykdyta

  • Įvedus reikšmę 50 ląstelėje F50, bus parodytas šis pranešimų langas

Išvada: Remdamiesi aukščiau pateiktais 7 pavyzdžiais, mes galime kreiptis dėl ciklo į įprastą ar bet kurią automatikos dalį.

Jei jums patiko mūsų tinklaraščiai, pasidalykite jais su draugais „Facebook“. Taip pat galite sekti mus „Twitter“ ir „Facebook“.
Mes norėtume išgirsti jūsų nuomonę, praneškite mums, kaip galime patobulinti, papildyti ar naujovinti savo darbą ir padaryti jį geresnį. Parašykite mums el