Denne opplæringen viser deg eksempler på bruk av For Every Loop i VBA. Klikk her for å lære mer om sløyfer generelt.
For hver sløyfe
For hver sløyfe lar deg gå gjennom Hver objekt i en samling:
- Alle celler i et område
- Alle regneark i en arbeidsbok
- Alle åpne arbeidsbøker
- Alle former i et regneark
- Alle elementene i en matrise
- og mer!
For hver: grunnleggende eksempler
Disse eksemplene vil demonstrere hvordan du konfigurerer For Each loop til å gå gjennom forskjellige typer objekter.
Sløyfe gjennom celler
Denne prosedyren går gjennom hver celle i område A1: A10, og setter cellen til at den er riktig lik seg selv.
12345678 | Sub ForEachCell ()Dim Cell As RangeFor hver celle i ark ("Ark1"). Område ("A1: A10")Cell.Offset (0, 1) .verdi = Cell.verdiNeste celleSlutt Sub |
Sløyfe gjennom ark
Denne prosedyren går gjennom hvert ark i en arbeidsbok, og hvert ark vises ikke.
12345678 | Sub ForEachSheets ()Dim ws Som regnearkFor hver gang i arkws.Visible = TrueNeste arkSlutt Sub |
Sløyfe gjennom arbeidsbøker
Denne prosedyren går gjennom hver arbeidsbok og lukker hver.
12345678 | Sub ForEachWorkbooks ()Dim wb Som arbeidsbokFor hver wb i arbeidsbøkerwb.LukkNeste wbSlutt Sub |
Sløyfe gjennom former
Denne prosedyren går gjennom hver form i Sheet1 og sletter hver.
12345678 | Sub ForEachShape ()Dim Shp som formFor hvert ark i ark ("Ark1"). FormerShp. SlettNeste ShpSlutt Sub |
Sløyfe gjennom diagrammer
Denne prosedyren går gjennom hvert diagram i ark1 og sletter hvert enkelt.
12345678 | Sub ForEachCharts ()Dim cht As ChartObjectFor hver del i ark ("Ark1"). ChartObjectscht. SlettNeste kapSlutt Sub |
Sløyfe gjennom pivottabeller
Denne prosedyren går gjennom hver pivottabell i Sheet1 og fjerner hver enkelt
12345678 | Sub ForEachPivotTables ()Dim pvt som pivottabellFor hver pvt In Sheets ("Sheet1"). Pivottabellerpvt.ClearTableNeste pvtSlutt Sub |
Sløyfe gjennom tabeller
Denne prosedyren går gjennom hver tabell i ark1 og sletter hver enkelt.
12345678 | Sub ForEachTables ()Dim tbl As ListObjectFor hver tbl i ark ("Ark1"). ListObjectstbl.SlettNeste tblSlutt Sub |
Sløyfe gjennom elementer i matrise
Denne prosedyren går gjennom hvert element i en matrise, viser hver verdi i en meldingsboks,
12345678910 | Sub ForEachItemInArray ()Dim arrValue som variantDim element som variantarrValue = Array ("Item 1", "Item 2", "Item 3")For hvert element i arrValueMsgBox -vareNeste elementSlutt Sub |
Sløyfe gjennom tall
Denne prosedyren går gjennom hvert nummer i en matrise, viser hver verdi i en meldingsboks,
12345678910111213 | Sub ForEachNumberInNumbers ()Dim arrNumber (1 til 3) som heltallDim num Som variantarrNumber (1) = 10arrNumber (2) = 20arrNumber (3) = 30For hvert nummer i arrNumberMeldingsnummerNeste nummerSlutt Sub |
For hver sløyfebygger
Eksemplene i denne artikkelen ble bygget med Loop Builder i vår VBA-tillegg: AutoMacro.
De Loop Builder gjør det veldig enkelt å generere kode for å gå gjennom objekter. AutoMacro inneholder også mange andre Kodegeneratorer, en omfattende Kodebibliotek, og kraftig Kodingsverktøy.
For hver - Hvis
Du kan også bruke If -setninger i looper for å teste om objekter oppfyller visse kriterier, bare utføre handlinger på objektene som oppfyller kriteriene. Her er et eksempel på sløyfe gjennom hver celle i et område:
For hver celle i området - hvis
1234567891011121314 | Sub If_Loop ()Dim Cell som RangeFor hver celle i området ("A2: A6")Hvis Cell.Value> 0 DaCell.Offset (0, 1) .Value = "Positive"ElseIf Cell.Value <0 DaCell.Offset (0, 1) .Value = "Negativ"EllersCell.Offset (0, 1) .Value = "Null"Slutt omNeste celleSlutt Sub |
For hver vanlige eksempler
Lukk alle arbeidsbøker
Denne prosedyren vil lukke alle åpne arbeidsbøker og lagre endringer.
123456789 | Sub CloseAllWorkbooks ()Dim wb Som arbeidsbokFor hver wb i arbeidsbøkerwb.Close SaveChanges: = TrueNeste wbSlutt Sub |
Skjul alle ark
Denne fremgangsmåten vil skjule alle regneark.
12345678 | Sub HideAllSheets ()Dim ws Som regnearkFor hver gang i arkws.Visible = xlSheetHiddenNeste wsSlutt Sub |
Vis alle ark
Denne fremgangsmåten vil vise alle regneark.
12345678 | Sub UnhideAllSheets ()Dim ws Som regnearkFor hver gang i arkws.Visible = xlSheetVisibleNeste wsSlutt Sub |
Beskytt alle ark
Denne fremgangsmåten vil beskytte alle regneark.
12345678 | Sub ProtectAllSheets ()Dim ws Som regnearkFor hver gang i arkws.Protect Password: = "…"Neste wsSlutt Sub |
Fjern beskyttelsen av alle ark
Denne fremgangsmåten vil fjerne beskyttelsen av alle regneark.
12345678 | Sub UnprotectAllSheets ()Dim ws Som regnearkFor hver gang i arkws.Unprotect Password: = "…"Neste wsSlutt Sub |
Slett alle former på alle regneark
Denne prosedyren sletter alle former i en arbeidsbok.
123456789101112 | Sub DeleteAllShapesOnAllWorksheets ()Dim ark som regnearkDim Shp som formFor hver gang i arkFor hver Shp In ws.ShapesShp. SlettNeste ShpNeste wsSlutt Sub |
Oppdater alle pivottabeller
Denne prosedyren vil oppdatere alle pivottabeller på et ark.
12345678 | Sub RefreshAllPivotTables ()Dim pvt som pivottabellFor hver pvt In Sheets ("Sheet1"). Pivottabellerpvt.RefreshTableNeste pvtSlutt Sub |
Bruker For Each in Access VBA
For hver sløyfe fungerer på samme måte i Access VBA som i Excel VBA. Følgende eksempel vil fjerne alle tabellene i den nåværende databasen.
123456789 | Sub RemoveAllTables ()Dim tdf As TableDefDim dbs som databaseSett dbs = CurrentDbFor hver tdf I dbs.TableDefsDoCmd.DeleteObject tdf.NameLøkkeSett dbs = ingentingSlutt Sub |