Denne vejledning viser dig eksempler på brug af For Every Loop i VBA. Klik her for at lære mere om sløjfer generelt.
For hver sløjfe
For hver sløjfe giver dig mulighed for at sløjfe igennem hver objekt i en samling:
- Alle celler i et område
- Alle regneark i en projektmappe
- Alle åbne projektmapper
- Alle former i et regneark
- Alle elementer i en matrix
- og mere!
For hver: Grundlæggende eksempler
Disse eksempler viser, hvordan du konfigurerer For Hver sløjfer til at gå gennem forskellige typer objekter.
Sløjfe gennem celler
Denne procedure løber gennem hver celle i område A1: A10 og sætter cellen til at være lige lig med sig selv.
12345678 | Sub ForEachCell ()Dim celle som rækkeviddeFor hver celle i ark ("Ark1"). Område ("A1: A10")Cell.Offset (0, 1) .værdi = Cell.værdiNæste celleAfslut Sub |
Sløjfe gennem ark
Denne procedure går gennem hvert ark i en projektmappe, og hvert ark vises ikke.
12345678 | Sub ForEachSheets ()Dim ws Som regnearkFor hver gang i arkws.Visible = TrueNæste arkAfslut Sub |
Sløjfe gennem arbejdsbøger
Denne procedure går gennem hver projektmappe og lukker hver enkelt.
12345678 | Sub ForEachWorkbooks ()Dim wb Som projektmappeFor hver wb i projektmapperwb.LukNæste wbAfslut Sub |
Sløjfe gennem former
Denne procedure går gennem hver form i Sheet1 og sletter hver enkelt.
12345678 | Sub ForEachShape ()Dim Shp som formFor hvert ark i ark ("Ark1"). FormerShp. SletNæste ShpAfslut Sub |
Sløjfe gennem diagrammer
Denne procedure går gennem hvert diagram i Sheet1 og sletter hvert enkelt.
12345678 | Sub ForEachCharts ()Dim cht som ChartObjectFor hver cht In Sheets ("Sheet1"). ChartObjectscht.SletNæste kapAfslut Sub |
Sløjfe gennem pivottabeller
Denne procedure går gennem hver pivottabel i Sheet1 og rydder hver enkelt
12345678 | Sub ForEachPivotTables ()Dim pvt som pivottabelFor hver pvt In Sheets ("Sheet1"). Pivottabellerpvt.ClearTableNæste pvtAfslut Sub |
Sløjfe gennem tabeller
Denne procedure går gennem hver tabel i Sheet1 og sletter hver enkelt.
12345678 | Sub ForEachTables ()Dim tbl som ListObjectFor hver tbl i ark ("Sheet1"). ListObjectstbl.SletNæste tblAfslut Sub |
Sløjfe gennem elementer i array
Denne procedure går gennem hvert element i et array, viser hver værdi i en msgbox,
12345678910 | Sub ForEachItemInArray ()Dim arrVærdi som variantDim element som variantarrValue = Array ("Item 1", "Item 2", "Item 3")For hver vare i arrValueMsgBox VareNæste elementAfslut Sub |
Sløjfe gennem tal
Denne procedure går gennem hvert nummer i et array, viser hver værdi i en msgbox,
12345678910111213 | Sub ForEachNumberInNumbers ()Dim arrNumber (1 til 3) som heltalDim num Som variantarrNumber (1) = 10arrNumber (2) = 20arrNumber (3) = 30For hvert nummer i arrNumberMsgbox NumNæste nummerAfslut Sub |
For hver Loop Builder
Eksemplerne i denne artikel blev bygget med Loop Builder i vores VBA-tilføjelse: AutoMacro.
Det Loop Builder gør det meget let at generere kode til at gå gennem objekter. AutoMacro indeholder også mange andre Kodegeneratorer, en omfattende Kodebibliotekog kraftfuld Kodningsværktøjer.
For hver - Hvis
Du kan også bruge If -sætninger i loops til at teste, om objekter opfylder visse kriterier, kun udføre handlinger på de objekter, der opfylder kriterierne. Her er et eksempel på sløjfe gennem hver celle i et område:
For hver celle i området - hvis
1234567891011121314 | Sub If_Loop ()Dim celle som rækkeviddeFor hver celle i området ("A2: A6")Hvis Cell.Value> 0 SåCell.Offset (0, 1) .Værdi = "Positiv"ElseIf Cell.Value <0 HerefterCell.Offset (0, 1) .Value = "Negativ"AndetCell.Offset (0, 1) .Value = "Nul"Afslut HvisNæste celleAfslut Sub |
For hver almindelige eksempler
Luk alle projektmapper
Denne procedure lukker alle åbne projektmapper og gemmer ændringer.
123456789 | Sub CloseAllWorkbooks ()Dim wb Som projektmappeFor hver wb i projektmapperwb.Close SaveChanges: = TrueNæste wbAfslut Sub |
Skjul alle ark
Denne procedure skjuler alle regneark.
12345678 | Sub HideAllSheets ()Dim ws Som regnearkFor hver gang i arkws.Visible = xlSheetHiddenNæste wsAfslut Sub |
Vis alle ark
Denne procedure vil vise alle regneark.
12345678 | Sub UnhideAllSheets ()Dim ws Som regnearkFor hver gang i arkws.Visible = xlSheetVisibleNæste wsAfslut Sub |
Beskyt alle ark
Denne procedure beskytter alle regneark.
12345678 | Sub ProtectAllSheets ()Dim ws Som regnearkFor hver gang i arkws.Protect Password: = "…"Næste wsAfslut Sub |
Fjern alle ark
Denne procedure fjerner beskyttelsen af alle regneark.
12345678 | Sub UnprotectAllSheets ()Dim ws Som regnearkFor hver gang i arkws.Unprotect Password: = "…"Næste wsAfslut Sub |
Slet alle former på alle regneark
Denne procedure sletter alle former i en projektmappe.
123456789101112 | Sub DeleteAllShapesOnAllWorksheets ()Dim ark som regnearkDim Shp som formFor hver gang i arkFor hver Shp In ws.ShapesShp. SletNæste ShpNæste wsAfslut Sub |
Opdater alle pivottabeller
Denne procedure opdaterer alle pivottabeller på et ark.
12345678 | Sub RefreshAllPivotTables ()Dim pvt som pivottabelFor hver pvt In Sheets ("Sheet1"). Pivottabellerpvt.RefreshTableNæste pvtAfslut Sub |
Brug for For hver i Access VBA
For hver sløjfe fungerer på samme måde i Access VBA som i Excel VBA. Følgende eksempel fjerner alle tabellerne i den aktuelle database.
123456789 | Sub RemoveAllTables ()Dim tdf As TableDefDim dbs som databaseIndstil dbs = CurrentDbFor hver tdf I dbs.TableDefsDoCmd.DeleteObject tdf.NameSløjfeIndstil dbs = IntetAfslut Sub |