VBA aasad - Nimekiri neljast peamisest silmusetüübist (koos näidetega)

Lang L: none (table-of-contents)

Exceli VBA aasad

Silmuseid kasutatakse tavaliselt kõigis programmeerimiskeeltes, kus on teatud vajadus või kriteeriumid, kui vajame teatud aja käivitamiseks kindlat koodi, kasutame nende koodide jaoks silmuseid, nüüd on VBA-s mitut tüüpi silmuseid, näiteks Do while, Tehke kuni, Silmuseks ja Iga silmuse jaoks aitavad need tsüklid koodi käivitada kuni tingimuse täitumiseni.

Lubage mul see avaldus teha kohe alguses. "Kui soovite omandada VBA-d, peate VBA-makrodes lõpule viima silmuste kontseptsiooni."

Silmus pole muud kui rakkude vahemiku läbimine, objektide vahemiku läbimine, et sama ülesannet rakkude või objektide kogumiseks korrata. Selle asemel, et teha ülesannet silmuste abil eraldi koodiridade komplektina, saame lühendada koodi pikkust võimalikult väheseks.

Nimekiri 4-st VBA-aasade tüübist

  1. Järgmise aasa jaoks
  2. Iga aasa jaoks
  3. Tehke silmuse ajal
  4. Tehke kuni aasani

Vaatame kõiki neid tüüpe üksikasjalikult.

Tüüp # 1 - järgmise aasa jaoks

For Järgmine silmus võimaldab meil rakkude vahemikus ringi liikuda ja täita sama ülesande kõigi silmus määratud lahtrite jaoks. Siin peame ütlema algus- ja lõpunumbri.

Näide

Näiteks kui soovite sisestada seerianumbrid vahemikus 1 kuni 10, on allpool tavapärane seerianumbrite sisestamise viis.

Alamseerianumber ()

Vahemik (“A1”). Väärtus = 1
Vahemik (“A2”). Väärtus = 2
Vahemik (“A3”). Väärtus = 3
Vahemik (“A4”). Väärtus = 4
Vahemik (“A5”). Väärtus = 5
Vahemik (“A6”). Väärtus = 6
Vahemik (“A7”). Väärtus = 7
Vahemik (“A8”). Väärtus = 8
Vahemik (“A9”). Väärtus = 9
Vahemik (“A10”). Väärtus = 10

Lõpeta alam

Tundub hea, kas pole? Kuid probleem on siin ainult kümme korda, kui peame selle ülesande täitma. Kuid kujutage ette, et kui soovite sisestada 100 või 1000 numbrit, kas saate kirjutada koodi 100 või 1000 rida. See on võimatu ja just seal on For Nexti ilu mugav.

Samm 1: Ava makro ja kuulutada muutuja i kui Integer.

Sub Insert_Serial_Number ()

Dim i täisarvuna

Lõpeta alam

2. samm: nüüd avage jaotis For Loop . Siin mainitakse muutuja i abil tsükli algus ja lõpp .

3. samm: kirjutage nüüd kood, mida soovite täita. Peame sisestama lahtritesse A1 kuni A10 numbrid 1 kuni 10. Range meetodi rakendamise asemel kasutage rakkude meetodit.

See küsib rea numbrit, kuna oleme muutuja i algul juba täisarvuks deklareerinud . Selle väärtus on 1. Seega mainige veerunumbrina mulle meeldivat teie rea number ja 1.

Nüüd peaks lahtri praeguse väärtuse väärtus olema üks, selle asemel, et mainida number üks mainida i väärtusena. Kuna iga aja jooksul, kasvab i väärtus 1 võrra.

Nüüd vajutage klahvi F8, et astuda ühekaupa. Vajutage klahvi F8, kuni see jõuab silmuseni For.

See kollane värv näitab, et valitud koodirida hakkab jooksma. Pange kursor I-le ja see näitab väärtust nullina.

Vajutage nüüd veel üks kord klahvi F8 ja asetage kursor i-le ja nüüd on väärtus 1.

Nii et i väärtused kõikjal on nüüd võrdsed 1. “ Lahtrid (I, 1) .väärtus = I” tähendab Lahtrid (1, 1) .Väärtus = 1.

Vajutage klahvi F8 ja vaadake väärtust lahtris A1. Lahtris A1 peate nägema 1.

Kui vajutate klahvi F8, läheb see veel kord silmusesse For, kuna muutuja i lõpupiirang on 10. Seekord on I väärtus 2.

Järgmine silmus töötab 10 korda ja sisestage seerianumbrid 1 kuni 10.

Tüüp # 2 - iga aasa jaoks

Iga VBA silmus on mõeldud objektide kogu kaudu silumiseks. Järgmise tsükli jaoks silmused läbi lahtrite ja sooritage ülesanne ning iga silmus vaatab läbi objektid nagu töölehed, diagrammid, töövihikud, kujundid.

Selle tsükli abil saame läbi käia kõik töölehed ja täita mõned ülesanded. Näiteks saate töölehtede peitmiseks ja peitmiseks kuvada kõik töölehed.

Näide 1

Kui soovite peita kõik töölehed, välja arvatud leht, mille kallal töötate, siis kuidas te seda teete? Kui teil on töövihikus 20 lehte, on see aeganõudev protsess. Kuid iga ahela jaoks saame selle ülesande täita.

Mul on 5 lehte ja ma tahan peita kõik lehed, välja arvatud see, et kood allpool olev leht “Main” täidaks minu jaoks selle ülesande.

Alam_Peida_Kõik_leht ()

Dim Ws töölehena

Iga W jaoks ActiveWorkbookis. Töölehed

Kui Ws.Name "Main", siis
Ws.Visible = xlSheetVeryHidden
End If

Järgmised Ws

Lõpeta alam

Näide 2

Kui soovite kõik peidetud lehed varjata, täidab teie töö allpool toodud kood.

Sub To_UnHide_Specific_Sheet ()

Dim Ws töölehena

Iga W jaoks ActiveWorkbookis. Töölehed

Ws.Visible = xSheetVisible

Järgmised Ws

Lõpeta alam

Tüüp # 3 - Tee silmuse ajal

Rakendus Do While loop täidab ülesannet ajal, mil antud tingimus on TÕENE, ja kui tingimusest saab FALSE, lõpetab see loopimise. Erinevalt kahest teisest silmusest testib Do While tingimust silmuse lõpus, mitte alguses.

Näitan teile näidet seerianumbrite sisestamise kohta silmuse Do While abil.

Alam Do_While_Example ()

Dim i täisarvuna

i = 1
Tehke, kui i <11
rakku (i, 1). Väärtus = i
i = i + 1
silmus

Lõpeta alam

Ülaltoodud tsükkel töötab, kui i on alla 11 ja jätkab seerianumbrite sisestamist. Hetkel, kui ma saan suuremaks kui 11, lakkab see loopimist.

Tüüp # 4 - tehke kuni silmuseni

Erinevalt silmusest Do While ei jookse silmus Do Until, kuni tingimus on TRUE; pigem silmus, kuni tingimus on FALSE. Näiteks vaadake allolevat koodi.

Sub Do_Until_Example ()

Dim i täisarvuna

i = 1
Tehke seni, kuni i = 11
rakku (i, 1). Väärtus = i
i = i + 1
silmus

Lõpeta alam

Ainus erinevus silmuse Do While & Do Until vahel on meie määratud operaator. Kirjas Do, kui me mainisime tsükli käivitamist, kui i on väiksem kui (<), 11, kuid do kuni silmuse, mainisime tsükli käivitamist, kuni i on võrdne (=) kuni 11.

Asjad, mida meeles pidada

  • On olemas täpsem Exceli VBA silmuse näide, kuid käsitleme neid kõiki eraldi artiklis üksikasjalikult.
  • Iga silmus on mõeldud objekti muutujate jaoks.
  • Kuigi väljanägemine „Tee samas ja tee kuni” näeb välja sama, on seisundi mainimine väga oluline.
  • Silmused on väga olulised mõisted.

Huvitavad Artiklid...