Acest tutorial vă va arăta exemple de utilizare a pentru fiecare buclă în VBA. Faceți clic aici pentru a afla mai multe despre bucle în general.
Pentru fiecare buclă
Pentru fiecare buclă vă permite să parcurgeți buclele fiecare obiect dintr-o colecție:
- Toate celulele dintr-un interval
- Toate foile de lucru dintr-un registru de lucru
- Toate registrele de lucru deschise
- Toate formele dintr-o foaie de lucru
- Toate articolele dintr-o matrice
- și altele!
Pentru fiecare: Exemple de bază
Aceste exemple vor demonstra cum să configurați pentru fiecare buclă să parcurgă diferite tipuri de obiecte.
Bucla prin celule
Această procedură va parcurge fiecare celulă din intervalul A1: A10, setând celula la fel ca ea însăși.
12345678 | Sub ForEachCell ()Dim Cell As RangePentru fiecare celulă din foi („Foaie1”). Interval („A1: A10”)Cell.Offset (0, 1) .value = Cell.valueUrmătoarea celulăSfârșitul Sub |
Buclați prin foi
Această procedură va parcurge fiecare foaie dintr-un registru de lucru, dezvăluind fiecare foaie.
12345678 | Sub ForEachSheets ()Dim ws Ca foaie de lucruPentru fiecare ws în foiws.Visible = AdevăratFoaia următoareSfârșitul Sub |
Buclați prin cărți de lucru
Această procedură va parcurge fiecare registru de lucru, închizând fiecare.
12345678 | Sub ForEachWorkbooks ()Dim wb Ca registru de lucruPentru fiecare wb din registrele de lucruwb.ÎnchideUrmătorul wbSfârșitul Sub |
Buclă prin forme
Această procedură va parcurge fiecare formă din Sheet1, ștergând fiecare.
12345678 | Sub ForEachShape ()Dim Shp Ca formăPentru fiecare Shp din foi („Sheet1”). FormeȘtergețiUrmătorul ShpSfârșitul Sub |
Buclați prin diagrame
Această procedură va parcurge fiecare diagramă din Sheet1, ștergând fiecare.
12345678 | Sub ForEachCharts ()Dim cht Ca ChartObjectPentru fiecare cht din foi („Sheet1”). ChartObjectsștergeUrmătorul chtSfârșitul Sub |
Buclați prin tabelele pivot
Această procedură va parcurge fiecare tabel pivot din Sheet1, ștergând fiecare
12345678 | Sub ForEachPivotTables ()Dim pvt Ca tabel pivotPentru fiecare pvt din foi ("Sheet1"). PivotTablespvt.ClearTableUrmătorul pvtSfârșitul Sub |
Bucle prin mese
Această procedură va parcurge fiecare tabel din Sheet1, ștergând fiecare.
12345678 | Sub ForEachTables ()Dim tbl Ca ListObjectPentru fiecare tabel din foi („Sheet1”). ListObjectstbl.StergețiUrmătorul tblSfârșitul Sub |
Buclați prin articole în matrice
Această procedură va parcurge fiecare element dintr-o matrice, va afișa fiecare valoare într-un msgbox,
12345678910 | Sub ForEachItemInArray ()Dim arrValue As VariantDim Element ca variantăarrValue = Array („Item 1”, „Item 2”, „Item 3”)Pentru fiecare articol din valoareElement MsgBoxUrmătorul articolSfârșitul Sub |
Buclați prin numere
Această procedură va parcurge fiecare număr dintr-o matrice, va afișa fiecare valoare într-un msgbox,
12345678910111213 | Sub ForEachNumberInNumbers ()Reduceți numărul (1 până la 3) ca întregDim num As VariantarrNumber (1) = 10arrNumber (2) = 20arrNumber (3) = 30Pentru fiecare numar In numar arNumar de mesajeNumărul următorSfârșitul Sub |
Pentru fiecare constructor de bucle
Exemplele din acest articol au fost construite cu Loop Builder în a noastră Supliment VBA: AutoMacro.
The Loop Builder face foarte ușor să generezi cod pentru a parcurge obiecte. AutoMacro conține și multe altele Generatoare de cod, o extinsă Biblioteca de coduri, și puternic Instrumente de codare.
Pentru fiecare - Dacă
Puteți utiliza, de asemenea, Instrucțiuni If în cadrul Buclelor pentru a testa dacă obiectele îndeplinesc anumite criterii, efectuând doar acțiuni asupra acelor obiecte care îndeplinesc criteriile. Iată un exemplu de buclă prin fiecare celulă dintr-un interval:
Pentru fiecare celulă din interval - Dacă
1234567891011121314 | Sub If_Loop ()Dim Cell ca RangePentru fiecare celulă din interval („A2: A6”)Dacă Cell.Value> 0 AtunciCell.Offset (0, 1) .Value = "Pozitiv"ElseIf Cell.Value <0 ApoiCell.Offset (0, 1) .Value = "Negativ"AltfelCell.Offset (0, 1) .Value = "Zero"End IfUrmătoarea celulăSfârșitul Sub |
Pentru fiecare exemplu comun
Închideți toate registrele de lucru
Această procedură va închide toate registrele de lucru deschise, salvând modificările.
123456789 | Sub CloseAllWorkbooks ()Dim wb Ca registru de lucruPentru fiecare wb din registrele de lucruwb.Închideți SaveChanges: = TrueUrmătorul wbSfârșitul Sub |
Ascundeți toate foile
Această procedură va ascunde toate foile de lucru.
12345678 | Sub HideAllSheets ()Dim ws Ca foaie de lucruPentru fiecare ws în foiws.Visible = xlSheetHiddenUrmătorul wsSfârșitul Sub |
Afișează toate foile
Această procedură va afișa toate foile de lucru.
12345678 | Sub UnhideAllSheets ()Dim ws Ca foaie de lucruPentru fiecare ws în foiws.Visible = xlSheetVisibleUrmătorul wsSfârșitul Sub |
Protejați toate foile
Această procedură va proteja toate foile de lucru.
12345678 | Sub ProtectAllSheets ()Dim ws Ca foaie de lucruPentru fiecare ws în foiws.Protect Password: = "…"Următorul wsSfârșitul Sub |
Deprotejați toate foile
Această procedură va proteja toate foile de lucru.
12345678 | Sub UnprotectAllSheets ()Dim ws Ca foaie de lucruPentru fiecare ws în foiws.Unprotect Password: = "…"Următorul wsSfârșitul Sub |
Ștergeți toate formele de pe toate foile de lucru
Această procedură va șterge toate formele dintr-un registru de lucru.
123456789101112 | Sub DeleteAllShapesOnAllWorksheets ()Reduceți foaia ca foaie de lucruDim Shp Ca formăPentru fiecare ws în foiPentru fiecare Shp In cu formeȘtergețiUrmătorul ShpUrmătorul wsSfârșitul Sub |
Actualizați toate tabelele pivot
Această procedură va reîmprospăta toate tabelele pivot de pe o foaie.
12345678 | Sub RefreshAllPivotTables ()Dim pvt Ca tabel pivotPentru fiecare pvt din foi („Sheet1”). PivotTablespvt.RefreshTableUrmătorul pvtSfârșitul Sub |
Utilizarea pentru fiecare în Access VBA
Bucla Pentru fiecare funcționează în același mod în Access VBA ca în Excel VBA. Următorul exemplu va elimina toate tabelele din baza de date curentă.
123456789 | Sub RemoveAllTables ()Dim tdf Ca TableDefDim dbs ca bază de dateSetați dbs = CurrentDbPentru fiecare tdf în dbs.TableDefsDoCmd.DeleteObject tdf.NameBuclăSet dbs = NothingSfârșitul Sub |