VBA pentru fiecare exemplu (referință rapidă)

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

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave