Excel VBA-Schleifen: Für Next, Do While, Do Until, For Each (mit Beispielen)

Um das Beste aus Excel und VBA herauszuholen, müssen Sie wissen, wie man Schleifen effizient verwendet.

In VBA können Sie mit Schleifen eine Reihe von Objekten/Werten durchlaufen und nacheinander analysieren. Sie können auch für jede Schleife spezifische Aufgaben ausführen.

Hier ist ein einfaches Beispiel für die Verwendung von VBA-Schleifen in Excel.

Angenommen, Sie haben ein Dataset und möchten alle Zellen in geraden Zeilen hervorheben. Sie können eine VBA-Schleife verwenden, um den Bereich zu durchlaufen und jede Zellenzeilennummer zu analysieren. Wenn es sich als gleichmäßig herausstellt, geben Sie ihm eine Farbe, ansonsten lassen Sie es so, wie es ist.

Dies ist natürlich sehr einfach in Excel VBA Schleifen (und Sie können dies auch mit bedingter Formatierung tun).

Im wirklichen Leben können Sie mit VBA-Schleifen in Excel viel mehr tun, die Ihnen bei der Automatisierung von Aufgaben helfen können.

Hier sind einige weitere praktische Beispiele, bei denen VBA-Schleifen nützlich sein können:

  • Durchlaufen einer Reihe von Zellen und Analysieren jeder Zelle (markieren Sie Zellen mit einem bestimmten Text darin).
  • Durchlaufen Sie alle Arbeitsblätter und machen Sie mit jedem etwas (z. B. schützen / den Schutz aufheben).
  • Durchlaufen Sie alle geöffneten Arbeitsmappen (und speichern Sie jede Arbeitsmappe oder schließen Sie alle außer der aktiven Arbeitsmappe).
  • Durchlaufen Sie alle Zeichen in einer Zelle (und extrahieren Sie den numerischen Teil aus einer Zeichenfolge).
  • Durchlaufen Sie alle Werte eines Arrays.
  • Durchlaufen Sie alle Diagramme/Objekte (und geben Sie einen Rahmen ein oder ändern Sie die Hintergrundfarbe).

Um Schleifen in Excel VBA optimal zu verwenden, müssen Sie die verschiedenen Arten und deren korrekte Syntax kennen.

In diesem Tutorial stelle ich verschiedene Arten von Excel VBA-Schleifen vor und behandle einige Beispiele für jede Schleife

Hinweis: Dies wird ein umfangreiches Tutorial, in dem ich versuche, jede VBA-Schleife detailliert zu behandeln. Ich empfehle Ihnen, diese Seite mit einem Lesezeichen zu versehen, um später darauf zurückgreifen zu können.

Wenn Sie daran interessiert sind, VBA auf einfache Weise zu lernen, besuchen Sie mein Online Excel VBA-Schulung.

Für die nächste Schleife

Mit der Schleife „For Next“ können Sie einen Codeblock so oft wie angegeben durchlaufen.

Wenn ich Sie zum Beispiel bitte, die ganzen Zahlen von 1 bis 10 manuell zu addieren, würden Sie die ersten beiden Zahlen addieren, dann die dritte Zahl zum Ergebnis hinzufügen und dann die vierte Zahl zum Ergebnis hinzufügen, usw.

Ist es nicht?

Die gleiche Logik wird in der For Next-Schleife in VBA verwendet.

Sie geben an, wie oft die Schleife ausgeführt werden soll, und geben außerdem an, was der Code bei jeder Ausführung der Schleife tun soll.

Unten ist die Syntax der For Next-Schleife:

Für Zähler = Anfang bis Ende [Schrittwert] [Auszuführender Codeblock] Nächster [Zähler]

In der For Next-Schleife können Sie einen Zähler (oder eine beliebige Variable) verwenden, die zum Ausführen der Schleife verwendet wird. Mit diesem Zähler können Sie diese Schleife so oft wie erforderlich ausführen.

Wenn ich beispielsweise die ersten 10 positiven ganzen Zahlen hinzufügen möchte, würde mein Zählerwert zwischen 1 und 10 liegen.

Sehen wir uns einige Beispiele an, um besser zu verstehen, wie die For Next-Schleife funktioniert.

Beispiel 1 - Addieren der ersten 10 positiven ganzen Zahlen

Unten ist der Code, der die ersten 10 positiven ganzen Zahlen mit einer For Next-Schleife hinzufügt.

Es wird dann ein Meldungsfeld mit der Summe dieser Zahlen angezeigt.

Sub AddNumbers() Dim Total As Integer Dim Count As Integer Total = 0 For Count = 1 To 10 Total = Total + Count Next Count MsgBox Total End Sub

In diesem Code wird der Wert von Total auf 0 gesetzt, bevor die For Next-Schleife aufgerufen wird.

Sobald es in die Schleife gelangt, enthält es den Gesamtwert nach jeder Schleife. Wenn also Counter nach der ersten Schleife 1 ist, wird der „Total“-Wert 1 und nach der zweiten Schleife 3 (1+2) und so weiter.

Und schließlich, wenn die Schleife endet, hat die Variable „Total“ die Summe der ersten 10 positiven ganzen Zahlen.

Eine MsgBox zeigt dann einfach das Ergebnis in einer Messagebox an.

Beispiel 2 – Hinzufügen der ersten 5 geraden positiven ganzen Zahlen

Um die ersten fünf geraden positiven ganzen Zahlen (d. h. 2, 4, 6, 8 und 10) zu summieren, benötigen Sie einen ähnlichen Code mit einer Bedingung, um nur die geraden Zahlen zu berücksichtigen und die ungeraden Zahlen zu ignorieren.

Hier ist ein Code, der es tut:

Sub AddEvenNumbers() Dim Total As Integer Dim Count As Integer Total = 0 For Count = 2 To 10 Step 2 Total = Total + Count Next Count MsgBox Total End Sub

Beachten Sie, dass wir den Count-Wert bei 2 begonnen und auch ‘Schritt 2‘.

Wenn Sie verwenden 'Schritt 2', teilt es dem Code mit, dass der 'Count'-Wert jedes Mal um 2 erhöht wird, wenn die Schleife ausgeführt wird.

Der Zählwert beginnt also bei 2 und wird dann 4, 6, 8 und 10, wenn die Schleife auftritt.

HINWEIS: Eine andere Möglichkeit, dies zu tun, könnte darin bestehen, die Schleife von 1 bis 10 auszuführen und innerhalb der Schleife zu prüfen, ob die Zahl gerade oder ungerade ist. Die Verwendung von Step ist in diesem Fall jedoch effizienter, da die Schleife nicht 10-mal, sondern nur 5-mal ausgeführt werden muss.

Der Step-Wert kann auch negativ sein. In einem solchen Fall beginnt der Zähler bei einem höheren Wert und wird um den angegebenen Schrittwert verringert.

Beispiel 3 – Eingabe der Seriennummer in die ausgewählten Zellen

Sie können die For Next-Schleife auch verwenden, um eine Sammlung von Objekten (wie Zellen oder Arbeitsblätter oder Arbeitsmappen) zu durchlaufen.

Hier ist ein Beispiel, das schnell Seriennummern in alle ausgewählten Zellen eingibt.

Sub EnterSerialNumber() Dim Rng As Range Dim Counter As Integer Dim RowCount As Integer Set Rng = Selection RowCount = Rng.Rows.Count For Counter = 1 To RowCount ActiveCell.Offset(Counter - 1, 0).Value = Counter Next Counter End Sub

Der obige Code zählt zuerst die Anzahl der ausgewählten Zeilen und weist diesen Wert dann der Variablen RowCount zu. Dann führen wir die Schleife von ‚1 to RowCount‘ aus.

Beachten Sie auch, dass wir die Variable Rng auf Selection setzen (mit der Zeile "Set Rng = Selection"), da die Auswahl eine beliebige Anzahl von Zeilen sein kann. Jetzt können wir die Variable ‚Rng‘ verwenden, um auf die Auswahl in unserem Code zu verweisen.

Beispiel 4 – Alle Arbeitsblätter in der aktiven Arbeitsmappe schützen

Sie können die Schleife "For Next" verwenden, um alle Arbeitsblätter in der aktiven Arbeitsmappe durchzugehen und jedes Arbeitsblatt zu schützen (oder den Schutz aufzuheben).

Unten ist der Code, der dies tut:

Sub ProtectWorksheets() Dim i As Integer For i = 1 To ActiveWorkbook.Worksheets.Count Worksheets(i).Protect Next i End Sub

Der obige Code zählt die Anzahl der Blätter mithilfe von ActiveWorkbook.Worksheets.Count. Dies teilt VBA mit, wie oft die Schleife ausgeführt werden muss.

In jedem Fall verweist es auf das I-te Arbeitsbuch (mit Hilfe von Worksheets(i)) und schützt es.

Sie können denselben Code auch verwenden, um den Schutz von Arbeitsblättern aufzuheben. Ändere einfach die Zeile Arbeitsblätter(i).Schützen zu Arbeitsblätter(i).UnProtect.

Verschachtelte „For Next“-Schleifen

Sie können verschachtelte "For Next"-Schleifen verwenden, um eine komplexere Automatisierung in Excel durchzuführen. Eine verschachtelte ‚For Next‘-Schleife würde bedeuten, dass es eine ‚For Next‘-Schleife innerhalb einer ‚For Next‘-Schleife gibt.

Lassen Sie mich Ihnen anhand eines Beispiels zeigen, wie Sie dies verwenden können.

Angenommen, ich habe 5 Arbeitsmappen in meinem System geöffnet und möchte alle Arbeitsblätter in all diesen Arbeitsmappen schützen.

Unten ist der Code, der dies tut:

Sub ProtectWorksheets() Dim i As Integer Dim j As Integer For i = 1 To Workbooks.Count For j = 1 To Workbooks(i).Worksheets.Count Workbooks(i).Worksheets(j).Protect Next j Next i End Sub

Das obige ist eine verschachtelte For Next-Schleife, da wir eine For Next-Schleife in einer anderen verwendet haben.

'EXIT For'-Anweisungen in For Next-Schleifen

Die 'Exit For'-Anweisung ermöglicht es Ihnen, die 'For Next'-Schleife vollständig zu verlassen.

Sie können es in Fällen verwenden, in denen die For Next-Schleife beendet werden soll, wenn eine bestimmte Bedingung erfüllt ist.

Nehmen wir ein Beispiel, in dem Sie eine Reihe von Zahlen in Spalte A haben und alle negativen Zahlen in roter Schrift hervorheben möchten. In diesem Fall müssen wir jede Zelle auf ihren Wert analysieren und dann die Schriftfarbe entsprechend ändern.

Um den Code jedoch effizienter zu gestalten, können wir zunächst prüfen, ob die Liste negative Werte enthält oder nicht. Wenn keine negativen Werte vorhanden sind, können wir die Anweisung Exit For verwenden, um einfach aus dem Code herauszukommen.

Unten ist der Code, der dies tut:

Sub HghlightNegative() Dim Rng As Range Set Rng = Range("A1", Range("A1").End(xlDown)) Counter = Rng.Count For i = 1 To Counter If WorksheetFunction.Min(Rng) >= 0 Then Exit For If Rng(i).Value < 0 Then Rng(i).Font.Color = vbRed Next i End Sub

Wenn Sie die 'Exit For'-Anweisung innerhalb einer verschachtelten 'For Next'-Schleife verwenden, verlässt sie die Schleife, in der sie ausgeführt wird, und führt die nächste Zeile im Code nach der For Next-Schleife aus.

Im folgenden Code zum Beispiel holt Sie die Anweisung „Exit For“ aus der inneren Schleife, aber die äußere Schleife würde weiterhin funktionieren.

Sub SampleCode() For i = 1 To 10 For j = 1 to 10 Exit For Next J Next i End Sub

Do While-Schleife

Eine 'Do While'-Schleife ermöglicht es Ihnen, nach einer Bedingung zu suchen und die Schleife auszuführen, während diese Bedingung erfüllt (oder WAHR) ist.

Es gibt zwei Arten von Syntax in der Do While-Schleife.

Do [While-Bedingung] [Codeblock zum Ausführen] Loop

und

Do [Codeblock zum Ausführen] Loop [While-Bedingung]

Der Unterschied zwischen diesen beiden besteht darin, dass im ersten Fall die While-Bedingung zuerst geprüft wird, bevor ein Codeblock ausgeführt wird, und im zweiten Fall der Codeblock zuerst ausgeführt wird und dann die While-Bedingung geprüft wird.

Das heißt, wenn die While-Bedingung in beiden Fällen False ist, wird der Code im zweiten Fall noch mindestens einmal ausgeführt (da die 'While'-Bedingung überprüft wird, nachdem der Code einmal ausgeführt wurde).

Sehen wir uns nun einige Beispiele für die Verwendung von Do While-Schleifen in VBA an.

Beispiel 1 – Addieren Sie die ersten 10 positiven ganzen Zahlen mit VBA

Angenommen, Sie möchten die ersten zehn positiven ganzen Zahlen mit der Do While-Schleife in VBA hinzufügen.

Dazu können Sie die Do While-Schleife verwenden, bis die nächste Zahl kleiner oder gleich 10 ist. Sobald die Zahl größer als 1o ist, würde Ihre Schleife anhalten.

Hier ist der VBA-Code, der diese Do While-Schleife ausführt und das Ergebnis in einem Meldungsfeld anzeigt.

Sub AddFirst10PositiveIntegers() Dim i As Integer i = 1 Do While i <= 10 Result = Result + i i = i + 1 Loop MsgBox Result End Sub

Die obige Schleife funktioniert weiter, bis der Wert von 'i' 11 wird. Sobald es 11 wird, endet die Schleife (da die While-Bedingung False wird).

Innerhalb der Schleife haben wir eine Ergebnisvariable verwendet, die den Endwert enthält. Sobald die Schleife abgeschlossen ist, zeigt ein Meldungsfeld den Wert der Variablen „Ergebnis“ an.

Beispiel 2 - Geben Sie Daten für den aktuellen Monat ein

Angenommen, Sie möchten alle Daten des aktuellen Monats in eine Arbeitsblattspalte eingeben.

Sie können dies tun, indem Sie den folgenden Do While-Schleifencode verwenden:

Sub EnterCurrentMonthDates() Dim CMDate As Date Dim i As Integer i = 0 CMDate = DateSerial(Year(Date), Month(Date), 1) Do While Month(CMDate) = Month(Date) Range("A1").Offset (i, 0) = CMDate i = i + 1 CMDate = CMDate + 1 Loop End Sub

Der obige Code würde alle Daten in die erste Spalte des Arbeitsblatts eingeben (beginnend mit A1). Die Schleifen werden fortgesetzt, bis der Monatswert der Variablen „CMDate“ mit dem des aktuellen Monats übereinstimmt.

Exit Do-Anweisung

Sie können die Anweisung Exit Do verwenden, um die Schleife zu verlassen. Sobald der Code die ‚Exit Do‘-Zeile ausführt, verlässt er die Do While-Schleife und übergibt die Kontrolle direkt nach der Schleife an die nächste Zeile.

Wenn Sie beispielsweise nur die ersten 10 Daten eingeben möchten, können Sie die Schleife verlassen, sobald die ersten 10 Daten eingegeben wurden.

Der folgende Code wird dies tun:

Sub EnterCurrentMonthDates() Dim CMDate As Date Dim i As Integer i = 0 CMDate = DateSerial(Year(Date), Month(Date), 1) Do While Month(CMDate) = Month(Date) Range("A1").Offset (i, 0) = CMDate i = i + 1 Wenn i >= 10 Then Exit Do CMDate = CMDate + 1 Loop End Sub

Im obigen Code wird die IF-Anweisung verwendet, um zu überprüfen, ob der Wert von i größer als 10 ist oder nicht. Sobald der Wert von ‚i‘ 10 wird, wird die Exit Do-Anweisung ausgeführt und die Schleife endet.

Mache bis Schleife

„Do Until“-Schleifen sind den „Do While“-Schleifen sehr ähnlich.

In „Do While“ läuft die Schleife, bis die angegebene Bedingung erfüllt ist, während sie in „Do Until“ eine Schleife wiederholt, bis die angegebene Bedingung erfüllt ist.

Es gibt zwei Arten von Syntax in der Do Until-Schleife.

Do [Bis Bedingung] [Codeblock zum Ausführen] Schleife

und

Do [Codeblock zum Ausführen] Loop [Bis-Bedingung]

Der Unterschied zwischen diesen beiden besteht darin, dass im ersten Fall die Bis-Bedingung zuerst geprüft wird, bevor ein Codeblock ausgeführt wird, und im zweiten Fall der Codeblock zuerst ausgeführt wird und dann die Bis-Bedingung geprüft wird.

Das heißt, wenn die Bedingung „Bis“ in beiden Fällen TRUE ist, wird der Code im zweiten Fall noch mindestens einmal ausgeführt (da die Bedingung „Bis“ geprüft wird, nachdem der Code einmal ausgeführt wurde).

Sehen wir uns nun einige Beispiele für die Verwendung von Do Until-Schleifen in VBA an.

Hinweis: Alle Beispiele für Do Until sind dieselben wie für Do While. Diese wurden geändert, um Ihnen zu zeigen, wie die Do Until-Schleife funktioniert.

Beispiel 1 – Addieren Sie die ersten 10 positiven ganzen Zahlen mit VBA

Angenommen, Sie möchten die ersten zehn positiven ganzen Zahlen mit der Do Until-Schleife in VBA hinzufügen.

Dazu müssen Sie die Schleife laufen lassen, bis die nächste Zahl kleiner oder gleich 10 ist. Sobald die Zahl größer als 1o ist, würde Ihre Schleife anhalten.

Hier ist der VBA-Code, der diese Schleife ausführt und das Ergebnis in einem Meldungsfeld anzeigt.

Sub AddFirst10PositiveIntegers() Dim i As Integer i = 1 Do Bis i > 10 Ergebnis = Ergebnis + i i = i + 1 Schleife MsgBox Ergebnis End Sub

Die obige Schleife arbeitet weiter, bis der Wert von ‚i‘ 11 wird. Sobald sie 11 wird, endet die Schleife (da die ‚Bis‘-Bedingung True wird).

Beispiel 2 - Geben Sie Daten für den aktuellen Monat ein

Angenommen, Sie möchten alle Daten des aktuellen Monats in eine Arbeitsblattspalte eingeben.

Sie können dies tun, indem Sie den folgenden Do Until-Schleifencode verwenden:

Sub EnterCurrentMonthDates() Dim CMDate As Date Dim i As Integer i = 0 CMDate = DateSerial(Year(Date), Month(Date), 1) Do Until Month(CMDate) Month(Date) Range("A1").Offset( i, 0) = CMDate i = i + 1 CMDate = CMDate + 1 Loop End Sub

Der obige Code würde alle Daten in die erste Spalte des Arbeitsblatts eingeben (beginnend mit A1). Die Schleife wird fortgesetzt, bis der Monat der Variablen CMDate ungleich dem des aktuellen Monats ist.

Exit Do-Anweisung

Sie können die 'Exit Do'-Anweisung verwenden, um die Schleife zu verlassen.

Sobald der Code die ‚Exit Do‘-Zeile ausführt, verlässt er die Do Until-Schleife und übergibt die Kontrolle direkt nach der Schleife an die nächste Zeile.

Wenn Sie beispielsweise nur die ersten 10 Daten eingeben möchten, können Sie die Schleife verlassen, sobald die ersten 10 Daten eingegeben wurden.

Der folgende Code wird dies tun:

Sub EnterCurrentMonthDates() Dim CMDate As Date Dim i As Integer i = 0 CMDate = DateSerial(Year(Date), Month(Date), 1) Do Until Month(CMDate) Month(Date) Range("A1").Offset( i, 0) = CMDate i = i + 1 Wenn i >= 10 Then Exit Do CMDate = CMDate + 1 Loop End Sub

Im obigen Code wird, sobald der Wert von ‚i‘ 10 wird, die Exit Do-Anweisung ausgeführt und die Schleife endet.

Für jedes

In VBA können Sie eine Reihe von Sammlungen mit der Schleife "For Each" durchlaufen.

Hier sind einige Beispiele für Sammlungen in Excel VBA:

  • Eine Sammlung aller geöffneten Arbeitsmappen.
  • Eine Auflistung aller Arbeitsblätter in einer Arbeitsmappe.
  • Eine Auflistung aller Zellen in einem Bereich ausgewählter Zellen.
  • Eine Auflistung aller Diagramme oder Formen in der Arbeitsmappe.

Mit der „For Each“-Schleife können Sie jedes der Objekte in einer Sammlung durchgehen und eine Aktion darauf ausführen.

Sie können beispielsweise alle Arbeitsblätter einer Arbeitsmappe durchgehen und diese schützen, oder Sie können alle Zellen in der Auswahl durchgehen und die Formatierung ändern.

Bei der „For Each“-Schleife (auch „For Each-Next“-Schleife genannt) müssen Sie nicht wissen, wie viele Objekte sich in einer Sammlung befinden.

Die „For Each“-Schleife durchläuft automatisch jedes Objekt und führt die angegebene Aktion aus. Wenn Sie beispielsweise alle Arbeitsblätter in einer Arbeitsmappe schützen möchten, wäre der Code derselbe, egal ob Sie eine Arbeitsmappe mit 3 Arbeitsblättern oder 30 Arbeitsblättern haben.

Hier ist die Syntax der For Each-Next-Schleife in Excel VBA.

Für jedes Element in der Sammlung [Auszuführender Codeblock] Nächstes [Element]

Sehen wir uns nun einige Beispiele für die Verwendung der For Each-Schleife in Excel an.

Beispiel 1 - Alle Arbeitsblätter in einer Arbeitsmappe durchgehen (und schützen)

Angenommen, Sie haben eine Arbeitsmappe, in der Sie alle Arbeitsblätter schützen möchten.

Die folgende For Each-Next-Schleife kann dies einfach tun:

Sub ProtectSheets() Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets ws.Protect Next ws End Sub

Im obigen Code haben wir die Variable „ws“ als Worksheet-Objekt definiert. Dies teilt VBA mit, dass ‚ws‘ als Arbeitsblattobjekt im Code interpretiert werden soll.

Jetzt verwenden wir die 'For Each'-Anweisung, um jedes 'ws' (das ein Arbeitsblattobjekt ist) in der Auflistung aller Arbeitsblätter in der aktiven Arbeitsmappe (von ActiveWorkbook.Worksheets) durchzugehen.

Beachten Sie, dass wir uns im Gegensatz zu anderen Schleifen, bei denen wir versucht haben, alle Arbeitsblätter in einer Arbeitsmappe zu schützen, hier keine Gedanken darüber machen müssen, wie viele Arbeitsblätter sich in der Arbeitsmappe befinden.

Wir müssen diese nicht zählen, um die Schleife auszuführen. For Each-Schleife stellt sicher, dass alle Objekte nacheinander analysiert werden.

Beispiel 2 - Alle geöffneten Arbeitsmappen durchgehen (und alle speichern)

Wenn Sie mit mehreren Arbeitsmappen gleichzeitig arbeiten, kann es praktisch sein, alle diese Arbeitsmappen gleichzeitig speichern zu können.

Der folgende VBA-Code kann dies für uns tun:

Sub SaveAllWorkbooks() Dim wb As Workbook For Each wb In Workbooks wb.Save Next wb End Sub

Beachten Sie, dass Sie in diesem Code keine Aufforderung erhalten, die Arbeitsmappe an einem bestimmten Ort zu speichern (wenn Sie sie zum ersten Mal speichern).

Es speichert es im Standardordner (in meinem Fall war es der Ordner "Dokumente"). Dieser Code funktioniert am besten, wenn diese Dateien bereits gespeichert sind und Sie Änderungen vornehmen und alle Arbeitsmappen schnell speichern möchten.

Beispiel 3 – Alle Zellen einer Auswahl durchgehen (negative Werte hervorheben)

Mit der „For Each“-Schleife können Sie alle Zellen in einem bestimmten Bereich oder im ausgewählten Bereich durchlaufen.

Dies kann hilfreich sein, wenn Sie jede Zelle analysieren und eine darauf basierende Aktion ausführen möchten.

Unten ist beispielsweise der Code, der alle Zellen in der Auswahl durchläuft und die Zellenfarbe der Zellen mit negativen Werten in Rot ändert.

Sub HighlightNegativeCells() Dim Cll As Range für jede Cll in der Auswahl If Cll.Value < 0 Then Cll.Interior.Color = vbRed End If Next Cll End Sub

(Beachten Sie, dass ich Cll als kurzen Variablennamen für Cell verwendet habe. Es ist ratsam, keine Objektnamen wie Sheets oder Range als Variablennamen zu verwenden.)

Im obigen Code durchläuft die For Each-Next-Schleife die Sammlung von Zellen in der Auswahl. Die IF-Anweisung wird verwendet, um festzustellen, ob der Zellenwert negativ ist oder nicht. Falls dies der Fall ist, erhält die Zelle eine rote Innenfarbe, andernfalls geht sie zur nächsten Zelle.

Falls Sie keine Auswahl haben und stattdessen möchten, dass VBA alle gefüllten Zellen in einer Spalte auswählt, beginnend mit einer bestimmten Zelle (genau wie wir Strg + Umschalt + Pfeiltaste nach unten verwenden, um alle gefüllten Zellen auszuwählen), können Sie Verwenden Sie den folgenden Code:

Sub HighlightNegativeCells() Dim Cll As Range Dim Rng As Range Set Rng = Range("A1", Range("A1").End(xlDown)) For Each Cll In Rng If Cll.Value < 0 Then Cll.Interior.Color = vbRed End If Next Cll End Sub

Im obigen Beispiel spielt es keine Rolle, wie viele gefüllte Zellen vorhanden sind. Es beginnt bei Zelle A1 und analysiert alle zusammenhängenden gefüllten Zellen in der Spalte.

Sie müssen auch nicht die Zelle A1 ausgewählt haben. Sie können jede weit entfernte Zelle auswählen und wenn der Code ausgeführt wird, werden immer noch alle Zellen in Spalte A (beginnend mit A1) berücksichtigt und die negativen Zellen eingefärbt.

'Beenden für'-Anweisung

Sie können die Anweisung „Exit For“ in der For Each-Next-Schleife verwenden, um die Schleife zu verlassen. Dies geschieht normalerweise, wenn eine bestimmte Bedingung erfüllt ist.

In Beispiel 3 kann es beispielsweise effizienter sein, zu prüfen, ob negative Werte vorhanden sind oder nicht, wenn wir eine Reihe von Zellen durchgehen. Falls keine negativen Werte vorhanden sind, können wir die Schleife einfach verlassen und etwas VBA-Verarbeitungszeit sparen.

Unten ist der VBA-Code, der dies tut:

Sub HighlightNegativeCells() Dim Cll As Range für jede Cll in der Auswahl If WorksheetFunction.Min(Selection) >= 0 Then Exit For If Cll.Value < 0 Then Cll.Interior.Color = vbRed End If Next Cll End Sub

Wo soll der VBA-Code abgelegt werden?

Sie fragen sich, wo der VBA-Code in Ihrer Excel-Arbeitsmappe hingehört?

Excel hat ein VBA-Backend namens VBA-Editor. Sie müssen den Code kopieren und in das Codefenster des VB-Editor-Moduls einfügen.

Hier sind die Schritte, um dies zu tun:

  1. Wechseln Sie zur Registerkarte Entwickler.
  2. Klicken Sie auf die Visual Basic-Option. Dies öffnet den VB-Editor im Backend.
  3. Klicken Sie im Bereich Projekt-Explorer im VB-Editor mit der rechten Maustaste auf ein beliebiges Objekt für die Arbeitsmappe, in die Sie den Code einfügen möchten. Wenn Sie den Projekt-Explorer nicht sehen, gehen Sie zur Registerkarte Ansicht und klicken Sie auf Projekt-Explorer.
  4. Gehen Sie zu Einfügen und klicken Sie auf Modul. Dadurch wird ein Modulobjekt für Ihre Arbeitsmappe eingefügt.
  5. Kopieren Sie den Code und fügen Sie ihn in das Modulfenster ein.

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

wave wave wave wave wave