VBA für jedes Beispiel (Kurzreferenz)

Dieses Tutorial zeigt Ihnen Beispiele für die Verwendung der For Each Loop in VBA. Klicken Sie hier, um mehr über Schleifen im Allgemeinen zu erfahren.

Für jede Schleife

Mit For Each Loop können Sie durchschleifen jede einzelne Objekt in einer Sammlung:

  • Alle Zellen in einem Bereich
  • Alle Arbeitsblätter in einer Arbeitsmappe
  • Alle geöffneten Arbeitsmappen
  • Alle Formen in einem Arbeitsblatt
  • Alle Elemente in einem Array
  • und mehr!

Für jeden: Grundlegende Beispiele

Diese Beispiele zeigen, wie Sie For Each-Schleifen einrichten, um verschiedene Objekttypen zu durchlaufen.

Zellen durchschleifen

Dieses Verfahren durchläuft jede Zelle im Bereich A1: A10 und setzt die Zelle rechts auf sich selbst.

12345678 Unter ForEachCell()Zelle als Bereich dimmenFür jede Zelle in Sheets("Sheet1").Range("A1:A10")Cell.Offset(0, 1).value = Cell.valueNächste ZelleEnd Sub

Blätter durchschleifen

Dieses Verfahren durchläuft jedes Blatt in einer Arbeitsmappe und blendet jedes Blatt ein.

12345678 Unter ForEachSheets()Dim ws als ArbeitsblattFür jedes ws in Sheetsws.Visible = TrueNächstes BlattEnd Sub

Durchlaufen von Arbeitsmappen

Dieses Verfahren durchläuft jede Arbeitsmappe und schließt jede.

12345678 Unter ForEachWorkbooks()Dim wb als ArbeitsmappeFür jedes wb in Arbeitsmappenwb.SchließenNächstes wbEnd Sub

Formen durchschleifen

Dieses Verfahren durchläuft jede Form in Sheet1 und löscht jede.

12345678 Sub ForEachShape()Shp als Form dimmenFür jede Shp in Sheets("Sheet1").ShapesShp.LöschenNächster ShpEnd Sub

Diagramme durchschleifen

Dieses Verfahren durchläuft jedes Diagramm in Sheet1 und löscht jedes.

12345678 Sub ForEachCharts()Dim cht As ChartObjectFor Each cht In Sheets("Sheet1").ChartObjectscht.LöschenNächste chtEnd Sub

Durchlaufen von PivotTables

Dieses Verfahren durchläuft jede PivotTable in Sheet1 und löscht jede einzelne

12345678 Unter ForEachPivotTables()pvt als PivotTable dimmenFür jedes pvt In Sheets("Sheet1").PivotTablespvt.ClearTableNächstes PVTEnd Sub

Tabellen durchschleifen

Dieses Verfahren durchläuft jede Tabelle in Sheet1 und löscht jede einzelne.

12345678 Unter ForEachTables()Dim tbl As ListObjectFor Each tbl In Sheets("Sheet1").ListObjectstbl.LöschenNächstes tblEnd Sub

Durchlaufen von Elementen im Array

Dieses Verfahren durchläuft jedes Element in einem Array, zeigt jeden Wert in einer Msgbox an,

12345678910 Unter ForEachItemInArray()Dim arrValue als VarianteArtikel als Variante dimmenarrValue = Array("Element 1", "Element 2", "Element 3")Für jeden Artikel in arrValueMsgBox-ElementNächstes ObjektEnd Sub

Zahlen durchschleifen

Dieses Verfahren durchläuft jede Zahl in einem Array, zeigt jeden Wert in einer Msgbox an,

12345678910111213 Unter ForEachNumberInNumbers()Dim arrNumber(1 To 3) As IntegerDim num Als VariantearrNummer(1) = 10arrNummer(2) = 20arrNummer(3) = 30Für jede Zahl In arrNumberMsgbox-NummerNächste NummerEnd Sub

Für jeden Loop Builder

Die Beispiele in diesem Artikel wurden mit dem Loop-Builder in unserer VBA-Add-In: AutoMacro.

Die Loop-Builder macht es sehr einfach, Code zum Durchlaufen von Objekten zu generieren. AutoMakro enthält auch viele andere Code-Generatoren, ein umfangreicher Codebibliothek, und mächtig Codierungstools.

Für jeden - Wenn

Sie können auch If-Anweisungen innerhalb von Schleifen verwenden, um zu testen, ob Objekte bestimmte Kriterien erfüllen, und nur Aktionen an den Objekten ausführen, die die Kriterien erfüllen. Hier ist ein Beispiel für das Durchlaufen jeder Zelle in einem Bereich:

Für jede Zelle im Bereich - Wenn

1234567891011121314 Unter If_Loop()Zelle als Bereich dimmenFür jede Zelle im Bereich ("A2: A6")Wenn Cell.Value > 0 ThenCell.Offset(0, 1).Value = "Positive"ElseIf Cell.Value < 0 ThenCell.Offset(0, 1).Value = "Negativ"AndersCell.Offset(0, 1).Value = "Null"Ende WennNächste ZelleEnd Sub

Für jedes gängige Beispiel

Alle Arbeitsmappen schließen

Dieses Verfahren schließt alle geöffneten Arbeitsmappen und speichert die Änderungen.

123456789 Unter CloseAllWorkbooks()Dim wb als ArbeitsmappeFür jedes wb in Arbeitsmappenwb.Close SaveChanges:=TrueNächstes wbEnd Sub

Alle Blätter ausblenden

Dieses Verfahren blendet alle Arbeitsblätter aus.

12345678 Unter HideAllSheets()Dim ws als ArbeitsblattFür jedes ws in Sheetsws.Visible = xlSheetHiddenNächstes wsEnd Sub

Alle Blätter einblenden

Dieses Verfahren blendet alle Arbeitsblätter ein.

12345678 Unter UnhideAllSheets()Dim ws als ArbeitsblattFür jedes ws in Sheetsws.Visible = xlSheetVisibleNächstes wsEnd Sub

Alle Blätter schützen

Dieses Verfahren schützt alle Arbeitsblätter.

12345678 Unter ProtectAllSheets()Dim ws als ArbeitsblattFür jedes ws in Sheetsws.Protect-Passwort:="… "Nächstes wsEnd Sub

Schutz aller Blätter aufheben

Durch dieses Verfahren wird der Schutz aller Arbeitsblätter aufgehoben.

12345678 Unter UnprotectAllSheets()Dim ws als ArbeitsblattFür jedes ws in Sheetsws.Passwort aufheben:="… "Nächstes wsEnd Sub

Alle Formen auf allen Arbeitsblättern löschen

Dieses Verfahren löscht alle Formen in einer Arbeitsmappe.

123456789101112 Unter DeleteAllShapesOnAllWorksheets()Dim Sheet als ArbeitsblattShp als Form dimmenFür jedes ws in SheetsFür jede Shp in ws.ShapesShp.LöschenNächster ShpNächstes wsEnd Sub

Alle PivotTables aktualisieren

Dieses Verfahren aktualisiert alle PivotTables auf einem Blatt.

12345678 Unter RefreshAllPivotTables()pvt als PivotTable dimmenFür jedes pvt In Sheets("Sheet1").PivotTablespvt.RefreshTableNächstes PVTEnd Sub

Verwenden von For Each in Access VBA

Die For Each-Schleife funktioniert in Access VBA genauso wie in Excel VBA. Im folgenden Beispiel werden alle Tabellen in der aktuellen Datenbank entfernt.

123456789 Unter RemoveAllTables()Dim tdf As TableDefDim dbs als DatenbankSetze dbs = CurrentDbFür jede tdf in dbs.TableDefsDoCmd.DeleteObject tdf.NameSchleifeSetze dbs = NichtsEnd Sub

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave