VBA voor elk voorbeeld (snelle referentie)

Deze tutorial laat je voorbeelden zien van het gebruik van de For Each Loop in VBA. Klik hier voor meer informatie over loops in het algemeen.

Voor elke lus

Met de For Each Loop kun je doorlopen elk object in een verzameling:

  • Alle cellen in een bereik
  • Alle werkbladen in een werkmap
  • Alle geopende werkmappen
  • Alle vormen in een werkblad
  • Alle items in een array
  • en meer!

Voor elk: basisvoorbeelden

Deze voorbeelden laten zien hoe u For Each-lussen kunt instellen om door verschillende soorten objecten te lopen.

Loop door cellen

Deze procedure loopt door elke cel in het bereik A1:A10, waarbij de cel gelijk wordt ingesteld aan zichzelf.

12345678 Sub VoorElkeCel()Dim cel als bereikVoor elke cel in bladen ("Blad1"). Bereik ("A1:A10")Cell.Offset(0, 1).value = Cell.valueVolgende celEinde sub

Doorgeluste bladen

Deze procedure loopt door elk blad in een werkmap, waardoor elk blad zichtbaar wordt.

12345678 Sub ForEachSheets()Dim ws als werkbladVoor elke ws in bladenws.Zichtbaar = TrueVolgende bladEinde sub

Loop door werkmappen

Deze procedure loopt door elke werkmap en sluit elke.

12345678 Sub VoorElke Werkboeken()Dim wb als werkboekVoor elke wb In Werkmappenwb.SluitenVolgende wbEinde sub

Loop door vormen

Deze procedure loopt door elke vorm in Blad1, waarbij elke vorm wordt verwijderd.

12345678 Sub voor elke vorm()Dim SHP als vormVoor elke shp in bladen ("Blad1"). VormenSp.VerwijderenVolgende ShpEinde sub

Doorloop grafieken

Deze procedure doorloopt elk diagram in Blad1, waarbij elk diagram wordt verwijderd.

12345678 Sub ForEachCharts()Dim cht As ChartObjectVoor elke cht In Sheets ("Blad1").ChartObjectscht.Verwijderenvolgende chtEinde sub

Loop door draaitabellen

Deze procedure loopt door elke draaitabel in Blad1, waarbij ze allemaal worden gewist

12345678 Sub ForEachPivotTables()Dim pvt als draaitabelVoor elke pvt in bladen ("Blad1"). Draaitabellenpvt.ClearTablevolgende pvtEinde sub

Doorloop tabellen

Deze procedure doorloopt elke tabel in Blad1, waarbij elke wordt verwijderd.

12345678 Sub ForEachTables()Dim tbl As ListObjectVoor elke tbl In Spreadsheets ("Blad1").ListObjectstbl.Verwijderenvolgende tblEinde sub

Doorloop items in array

Deze procedure doorloopt elk item in een array, geeft elke waarde weer in een msgbox,

12345678910 Sub ForEachItemInArray()Dim arrValue As VariantDim item als variantarrValue = Array ("Artikel 1", "Artikel 2", "Artikel 3")Voor elk item in arrValueMsgBox-itemVolgende itemEinde sub

Doorgeluste nummers

Deze procedure doorloopt elk nummer in een array, geeft elke waarde weer in een msgbox,

12345678910111213 Sub ForEachNumberInNumbers()Dim arrNumber (1 tot 3) als geheel getalDim num als variantarrNummer(1) = 10arrGetal (2) = 20arrNummer (3) = 30Voor elk nummer In arrNumberMsgbox NumVolgende nummerEinde sub

Voor elke Loop Builder

De voorbeelden in dit artikel zijn gebouwd met de Loop Builder in onze VBA-invoegtoepassing: AutoMacro.

De Loop Builder maakt het heel eenvoudig om code te genereren om door objecten te lopen. Automacro bevat ook vele andere Codegeneratoren, een uitgebreide Codebibliotheeken krachtig Coderingstools.

Voor elk - Als

U kunt ook If-statements binnen Loops gebruiken om te testen of objecten aan bepaalde criteria voldoen, en alleen acties uitvoeren op die objecten die aan de criteria voldoen. Hier is een voorbeeld van het doorlopen van elke cel in een bereik:

Voor elke cel binnen bereik - Als

1234567891011121314 Sub If_Loop()Dim Cell als bereikVoor elke cel binnen bereik ("A2:A6")Als Cell.Value > 0 DanCell.Offset(0, 1).Waarde = "Positief"ElseIf Cell.Waarde < 0 DanCell.Offset(0, 1).Waarde = "Negatief"AndersCell.Offset(0, 1).Waarde = "Nul"Stop alsVolgende celEinde sub

Voor elk veelvoorkomend voorbeeld

Sluit alle werkmappen

Met deze procedure worden alle geopende werkmappen gesloten en worden wijzigingen opgeslagen.

123456789 Sub SluitenAlleWerkboeken()Dim wb als werkboekVoor elke wb In Werkmappenwb.Close SaveChanges:=TrueVolgende wbEinde sub

Alle bladen verbergen

Met deze procedure worden alle werkbladen verborgen.

12345678 SubHideAllSheets()Dim ws als werkbladVoor elke ws in bladenws.Visible = xlSheetHiddenVolgende wsEinde sub

Alle bladen zichtbaar maken

Met deze procedure worden alle werkbladen zichtbaar.

12345678 Sub UnhideAllSheets()Dim ws als werkbladVoor elke ws in bladenws.Visible = xlSheetVisibleVolgende wsEinde sub

Bescherm alle bladen

Deze procedure beschermt alle werkbladen.

12345678 Sub ProtectAllSheets()Dim ws als werkbladVoor elke ws in bladenws.Bescherm wachtwoord:="… "Volgende wsEinde sub

Beveiliging van alle bladen opheffen

Met deze procedure wordt de beveiliging van alle werkbladen opgeheven.

12345678 Sub BeschermAlle Bladen()Dim ws als werkbladVoor elke ws in bladenws.Unprotect Wachtwoord:="… "Volgende wsEinde sub

Alle vormen op alle werkbladen verwijderen

Met deze procedure worden alle vormen in een werkmap verwijderd.

123456789101112 Sub DeleteAllShapesOnAllWorksheets()Gedimd blad als werkbladDim SHP als vormVoor elke ws in bladenVoor elke Shp In ws.ShapesSp.VerwijderenVolgende ShpVolgende wsEinde sub

Alle draaitabellen vernieuwen

Met deze procedure worden alle draaitabellen op een blad vernieuwd.

12345678 Sub RefreshAllPivotTables()Dim pvt als draaitabelVoor elke pvt in bladen ("Blad1"). Draaitabellenpvt.RefreshTablevolgende pvtEinde sub

Voor elk gebruiken in Access VBA

De For Each-lus werkt in Access VBA op dezelfde manier als in Excel VBA. In het volgende voorbeeld worden alle tabellen in de huidige database verwijderd.

123456789 Sub VerwijderAlleTables()Dim tdf As TableDefDim dbs als databaseStel dbs = CurrentDb inVoor elke tdf in dbs.TableDefsDoCmd.DeleteObject tdf.NameLusStel dbs = Niets inEinde sub

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave