VBA för varje exempel (snabbreferens)

Denna handledning visar dig exempel på hur du använder For each loop i VBA. Klicka här för att lära dig mer om slingor i allmänhet.

För varje slinga

Med För varje slinga kan du gå igenom varje objekt i en samling:

  • Alla celler i ett område
  • Alla kalkylblad i en arbetsbok
  • Alla öppna arbetsböcker
  • Alla former i ett kalkylblad
  • Alla objekt i en array
  • och mer!

För var och en: Grundläggande exempel

Dessa exempel kommer att visa hur du ställer in För varje slingor att gå igenom olika typer av objekt.

Loop Through Cells

Denna procedur går igenom varje cell i intervallet A1: A10 och ställer in cellen till att vara rätt lika med sig själv.

12345678 Sub ForEachCell ()Dim Cell As RangeFör varje cell i ark ("Ark1"). Område ("A1: A10")Cell.Offset (0, 1) .värde = Cell.värdeNästa cellAvsluta Sub

Loop Through Sheets

Den här proceduren går igenom varje ark i en arbetsbok, vilket gör att varje ark inte visas.

12345678 Sub ForEachSheets ()Dim ws Som arbetsbladFör varje ws i bladws.Visible = TrueNästa bladAvsluta Sub

Loop Through Workbooks

Denna procedur går igenom varje arbetsbok och stänger var och en.

12345678 Sub ForEachWorkbooks ()Dim wb Som arbetsbokFör varje wb i arbetsböckerwb.StängNästa wbAvsluta Sub

Loop Through Shapes

Denna procedur går igenom varje form i Sheet1 och raderar var och en.

12345678 Sub ForEachShape ()Dim Shp som formFör varje inmatningsark ("Sheet1"). FormerShp.DeleteNästa ShpAvsluta Sub

Loop Through Charts

Denna procedur går igenom varje diagram i Sheet1 och raderar varje.

12345678 Sub ForEachCharts ()Dim cht As ChartObjectFör varje cht i Sheets ("Sheet1"). ChartObjectscht.DeleteNästa kapAvsluta Sub

Loop Through PivotTables

Denna procedur går igenom varje pivottabell i Sheet1 och rensar var och en

12345678 Sub ForEachPivotTables ()Dim pvt som pivottabellFör varje pvt i Sheets ("Sheet1"). Pivottabellerpvt.ClearTableNästa pvtAvsluta Sub

Loop Through Tabeller

Denna procedur går igenom varje tabell i Sheet1 och raderar varje tabell.

12345678 Sub ForEachTables ()Dim tbl Som ListObjectFör varje tbl i Sheets ("Sheet1"). ListObjectstbl.RaderaNästa tblAvsluta Sub

Loop Through Items in Array

Denna procedur går igenom varje objekt i en matris, visar varje värde i en msgbox,

12345678910 Sub ForEachItemInArray ()Dim arrVärde som variantDim objekt som variantarrValue = Array ("Artikel 1", "Artikel 2", "Artikel 3")För varje artikel i arrValueMsgBox ArtikelNästa artikelAvsluta Sub

Loop Through Numbers

Denna procedur går igenom varje nummer i en matris, visar varje värde i en msgbox,

12345678910111213 Sub ForEachNumberInNumbers ()Dim arrNumber (1 till 3) som heltalDim num Som variantarrNumber (1) = 10arrNumber (2) = 20arrNumber (3) = 30För varje nummer i arrNumberMsgbox -nummerNästa nummerAvsluta Sub

För varje loop -byggare

Exemplen i denna artikel byggdes med Loop Builder i vår VBA-tillägg: AutoMacro.

De Loop Builder gör det mycket enkelt att generera kod för att gå igenom objekt. AutoMacro innehåller också många andra Kodgeneratorer, en omfattande Kodbibliotekoch kraftfull Kodningsverktyg.

För varje - Om

Du kan också använda If -satser inom loopar för att testa om objekt uppfyller vissa kriterier, bara utföra åtgärder på de objekt som uppfyller kriterierna. Här är ett exempel på att gå igenom varje cell i ett intervall:

För varje cell i intervallet - If

1234567891011121314 Sub If_Loop ()Dim Cell som intervallFör varje cell i intervallet ("A2: A6")Om Cell.Value> 0 DåCell.Offset (0, 1) .Value = "Positive"ElseIf Cell.Value <0 SedanCell.Offset (0, 1) .Value = "Negativt"AnnanCell.Offset (0, 1) .Value = "Noll"Avsluta omNästa cellAvsluta Sub

För varje vanligt exempel

Stäng alla arbetsböcker

Denna procedur stänger alla öppna arbetsböcker och sparar ändringar.

123456789 Sub CloseAllWorkbooks ()Dim wb Som arbetsbokFör varje wb i arbetsböckerwb.Close SaveChanges: = TrueNästa wbAvsluta Sub

Dölj alla ark

Denna procedur döljer alla kalkylblad.

12345678 Sub HideAllSheets ()Dim ws Som arbetsbladFör varje ws i bladws.Visible = xlSheetHiddenNästa wsAvsluta Sub

Ta bort alla blad

Denna procedur visar alla kalkylblad.

12345678 Sub UnhideAllSheets ()Dim ws Som arbetsbladFör varje ws i bladws.Visible = xlSheetVisibleNästa wsAvsluta Sub

Skydda alla ark

Denna procedur skyddar alla kalkylblad.

12345678 Sub ProtectAllSheets ()Dim ws Som arbetsbladFör varje ws i bladws.Protect Password: = "…"Nästa wsAvsluta Sub

Skydda alla blad

Denna procedur avskyddar alla kalkylblad.

12345678 Sub UnprotectAllSheets ()Dim ws Som arbetsbladFör varje ws i bladws.Unprotect Password: = "…"Nästa wsAvsluta Sub

Ta bort alla former på alla kalkylblad

Denna procedur tar bort alla former i en arbetsbok.

123456789101112 Sub DeleteAllShapesOnAllWorksheets ()Dimma blad som arbetsbladDim Shp som formFör varje ws i bladFör varje Shp In ws.ShapesShp.DeleteNästa ShpNästa wsAvsluta Sub

Uppdatera alla pivottabeller

Denna procedur uppdaterar alla pivottabeller på ett ark.

12345678 Sub RefreshAllPivotTables ()Dim pvt som pivottabellFör varje pvt i Sheets ("Sheet1"). Pivottabellerpvt.RefreshTableNästa pvtAvsluta Sub

Använda för var och en i Access VBA

För varje slinga fungerar på samma sätt i Access VBA som i Excel VBA. I följande exempel kommer alla tabeller i den aktuella databasen att tas bort.

123456789 Sub RemoveAllTables ()Dim tdf As TableDefDim dbs som databasStäll in dbs = CurrentDbFör varje tdf i dbs.TableDefsDoCmd.DeleteObject tdf.NameSlingaStäll in dbs = ingentingAvsluta Sub

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave