Ši pamoka parodys pavyzdžius, kaip VBA naudoti kiekvieną kilpą. Spustelėkite čia, kad sužinotumėte daugiau apie kilpas apskritai.
Už kiekvieną kilpą
„For For Every Loop“ leidžia atlikti kilpą kiekvienas objektas kolekcijoje:
- Visos ląstelės diapazone
- Visi darbalapiai darbo knygoje
- Visos atviros darbo knygos
- Visos formos darbalapyje
- Visi masyvo elementai
- ir dar!
Kiekvienam: pagrindiniai pavyzdžiai
Šie pavyzdžiai parodys, kaip nustatyti kiekvienai kilpai, kad būtų galima perjungti skirtingų tipų objektus.
Loop Through Cells
Ši procedūra aplenks kiekvieną A1: A10 diapazono langelį, nustatydama langelį sau tinkamą.
12345678 | Sub ForEachCell ()„Dim Cell“ kaip diapazonasKiekvienai lapų langeliui („Sheet1“). Diapazonas („A1: A10“)Langelis. Poslinkis (0, 1) .value = Cell.valueKitas langelisPabaiga Sub |
„Loop Through Sheets“
Ši procedūra aplenks kiekvieną darbo knygos lapą, atskleisdama kiekvieną lapą.
12345678 | Sub ForEachSheets ()Dim ws kaip darbalapisUž kiekvieną ws In Sheetsws.Visible = TiesaKitas lapasPabaiga Sub |
Peržiūrėkite darbo knygas
Ši procedūra aplenks kiekvieną darbo knygą, uždarydama kiekvieną.
12345678 | Sub ForEachWorkbooks ()Dim wb Kaip darbo knygaUž kiekvieną wb darbaknygėsewb. UždarytiKitas wbPabaiga Sub |
Kurti formas
Ši procedūra aplenks kiekvieną „Sheet1“ formą, ištrindama kiekvieną.
12345678 | Sub ForEachShape ()Dim Shp kaip formaKiekvienam „Shep In Sheets“ („Sheet1“). FormosShp. IštrintiKitas ShpPabaiga Sub |
„Loop Through“ diagramos
Ši procedūra aplenks kiekvieną lentelės 1 diagramą, ištrindama kiekvieną.
12345678 | Sub ForEachCharts ()Dim cht Kaip ChartObjectUž kiekvieną cht In Sheets („Sheet1“). ChartObjectscht. IštrintiKitas chtPabaiga Sub |
Perjungti „PivotTable“
Ši procedūra atliks kiekvieną „Sheet1“ „PivotTable“, išvalydama kiekvieną
12345678 | Sub ForEachPivotTables ()Dim pvt As PivotTableUž kiekvieną pvt In Sheets („Sheet1“). „PivotTable“pvt.ClearTableKitas pvtPabaiga Sub |
Keliaukite per lenteles
Ši procedūra pereis per kiekvieną 1 lapo lentelę, ištrindama kiekvieną.
12345678 | Sub ForEachTables ()Dim tbl kaip ListObjectUž kiekvieną tbl In Sheets ("Sheet1"). ListObjectstbl. IštrintiKitas tblPabaiga Sub |
Peržiūrėkite elementus iš masyvo
Ši procedūra atliks kiekvieną masyvo elementą, parodys kiekvieną vertę žinutės dėžutėje,
12345678910 | Sub ForEachItemInArray ()Dim arrValue As VariantDim Dimension As VariantarrValue = Masyvas ("1 elementas", "2 elementas", "3 punktas")Kiekvienam elementui In arrValue„MsgBox“ elementasKitas elementasPabaiga Sub |
Keliaukite per skaičius
Ši procedūra aplenks kiekvieną skaičių masyve, parodys kiekvieną reikšmę žinutės dėžutėje,
12345678910111213 | Sub ForEachNumberInNumbers ()Dim arrNumber (nuo 1 iki 3) kaip sveikasis skaičiusDim num As VariantarrNumber (1) = 10arrNumber (2) = 20arrNumber (3) = 30Už kiekvieną skaičių In arrNumber„Msgbox“ numerisKitas numerisPabaiga Sub |
Kiekvienam kilpų kūrėjui
Šio straipsnio pavyzdžiai buvo sukurti naudojant Kilpų kūrėjas mūsų VBA priedas: „AutoMacro“.
The Kilpų kūrėjas labai lengva sugeneruoti kodą, kad būtų galima perjungti objektus. AutoMacro taip pat yra daug kitų Kodų generatoriai, platus Kodų biblioteka, ir galingas Kodavimo įrankiai.
Kiekvienam - jei
Taip pat galite naudoti „If Statements in Loops“, kad patikrintumėte, ar objektai atitinka tam tikrus kriterijus, tik atlikdami veiksmus su tais objektais, kurie atitinka kriterijus. Čia pateikiamas kiekvienos diapazono ląstelės ciklo pavyzdys:
Kiekvienai diapazono langeliui - jei
1234567891011121314 | Antrinis If_Loop ()„Dim Cell“ kaip diapazonasKiekvienai diapazono langeliui ("A2: A6")Jei langelis.Vertė> 0 TadaLangelis.Poilsis (0, 1) .Vertybė = "Teigiamas"ElseIf Cell.Value <0 TadaLangelis.Poilsis (0, 1) .Vertybė = "Neigiamas"KitasLangelis.Poilsis (0, 1) .Vertybė = "Nulis"Pabaiga JeiKitas langelisPabaiga Sub |
Kiekvienam bendram pavyzdžiui
Uždaryti visas darbaknyges
Ši procedūra uždarys visas atidarytas darbaknyges ir išsaugos pakeitimus.
123456789 | Sub CloseAllWorkbooks ()Dim wb Kaip darbo knygaUž kiekvieną wb darbaknygėsewb. Uždaryti SaveChanges: = TiesaKitas wbPabaiga Sub |
Slėpti visus lapus
Ši procedūra paslėps visus darbalapius.
12345678 | Sub HideAllSheets ()Dim ws kaip darbalapisUž kiekvieną ws In Sheetsws.Visible = xlSheetHiddenKitas wsPabaiga Sub |
Rodyti visus lapus
Ši procedūra parodys visus darbalapius.
12345678 | Sub UnhideAllSheets ()Dim ws kaip darbalapisUž kiekvieną ws In Sheetsws.Visible = xlSheetVisibleKitas wsPabaiga Sub |
Apsaugokite visus lapus
Ši procedūra apsaugos visus darbalapius.
12345678 | Sub ProtectAllSheets ()Dim ws kaip darbalapisUž kiekvieną ws In Sheetsws.Protect Slaptažodis: = "…"Kitas wsPabaiga Sub |
Atšaukti visų lapų apsaugą
Ši procedūra panaikins visų darbalapių apsaugą.
12345678 | Sub UnprotectAllSheets ()Dim ws kaip darbalapisUž kiekvieną ws In Sheetsws.Unprotect Password: = "…"Kitas wsPabaiga Sub |
Ištrinkite visas formas visuose darbalapiuose
Ši procedūra ištrins visas darbaknygės formas.
123456789101112 | Sub DeleteAllShapesOnAllWorksheets ()Apšviesti lapą kaip darbalapįDim Shp kaip formaUž kiekvieną ws In SheetsKiekvienam Shp In ws.ShapesShp. IštrintiKitas ShpKitas wsPabaiga Sub |
Atnaujinti visas „PivotTable“
Ši procedūra atnaujins visas lapo „PivotTable“ lenteles.
12345678 | Sub RefreshAllPivotTables ()Dim pvt As PivotTableUž kiekvieną pvt In Sheets („Sheet1“). „PivotTable“pvt.RefreshTableKitas pvtPabaiga Sub |
Naudojimas kiekvienam „Access VBA“
„For Every loop“ veikia taip pat „Access VBA“, kaip ir „Excel VBA“. Šis pavyzdys pašalins visas dabartinės duomenų bazės lenteles.
123456789 | Sub RemoveAllTables ()Dim tdf kaip „TableDef“Dim dbs kaip duomenų bazėNustatykite dbs = CurrentDbKiekvienam tdf dbs.TableDefsDoCmd.DeleteObject tdf.NameKilpaNustatyti dbs = niekoPabaiga Sub |