Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: For Schleife mit 2 Variablen

For Schleife mit 2 Variablen
11.06.2020 14:11:16
Lukas
Hallo liebe Community,
untenstehend folgender Code:

Private Sub Worksheet_Calculate1()
Dim RaBereich As Range                  ' Variable für Bereich
Dim RaZelle As Range                    ' Variable für Zelle
' Bereich der Wirksamkeit
Set RaBereich = Range("F20")
For Each RaZelle In RaBereich           ' überwachten Bereich formatieren
With RaZelle
Select Case .Value              ' Zellinhalt vergleichen
Case Is = ""
.Interior.ColorIndex = 0      ' Füllfarbe leer
.Font.ColorIndex = 1          ' Schriftfarbe Schwarz
Case Is = Range("W20").Value
.Interior.ColorIndex = 4      ' Füllfarbe Hellgrün
.Font.ColorIndex = 1          ' Schriftfarbe Schwarz
Case Is = "0"
.Interior.ColorIndex = 4      ' Füllfarbe Hellgrün
.Font.ColorIndex = 1          ' Schriftfarbe Schwarz
Case Else
.Interior.ColorIndex = 0      ' Füllfarbe leer
.Font.ColorIndex = 1          ' Schriftfarbe Schwarz
End Select
End With
Next RaZelle
Set RaBereich = Nothing                 ' Variable leeren
End Sub

Ich möchte diese Formel über 300 Zeilen durchführen und die zwei Variablen...
Set RaBereich = Range("F20")
Case Is = Range("W20").Value
... sollen jeweils mit der nächsten Zeile mitspringen.
Zum Beispiel:
Zeile 1: Set RaBereich = Range("F20")
Case Is = Range("W20").Value
Zeile 2: Set RaBereich = Range("F21")
Case Is = Range("W21").Value
und das über 300 Zeilen.
Vielen Dank schon mal für Eure Hilfe.
Schöne Grüße
Lukas
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: For Schleife mit 2 Variablen
11.06.2020 14:21:41
Martin
Hallo Lukas,
eigentlich scheint es mir so, als ob die Bedingte Formatierung besser als dieses Makro geeignet wäre. Ich habe dein Makro nach deiner Beschreibung angepasst, allerdings müsstest du noch die Zeilen genauer festlegen. Da aus deiner Beschreibung der Zeilenbereich nicht hervorgeht, habe ich jetzt die Zeilen 20 bis 320 eingetragen:
Private Sub Worksheet_Calculate1()
Dim iRow As Integer
Dim RaBereich As Range                  ' Variable für Bereich
Dim RaZelle As Range                    ' Variable für Zelle
' Bereich der Wirksamkeit
For iRow = 20 To 320
Set RaBereich = Cells(iRow, 6)
For Each RaZelle In RaBereich           ' überwachten Bereich formatieren
With RaZelle
Select Case .Value              ' Zellinhalt vergleichen
Case Is = ""
.Interior.ColorIndex = 0      ' Füllfarbe leer
.Font.ColorIndex = 1          ' Schriftfarbe Schwarz
Case Is = Cells(iRow, 23).Value
.Interior.ColorIndex = 4      ' Füllfarbe Hellgrün
.Font.ColorIndex = 1          ' Schriftfarbe Schwarz
Case Is = "0"
.Interior.ColorIndex = 4      ' Füllfarbe Hellgrün
.Font.ColorIndex = 1          ' Schriftfarbe Schwarz
Case Else
.Interior.ColorIndex = 0      ' Füllfarbe leer
.Font.ColorIndex = 1          ' Schriftfarbe Schwarz
End Select
End With
Next RaZelle
Next
Set RaBereich = Nothing                 ' Variable leeren
End Sub
Viele Grüße
Martin
Anzeige
AW: For Schleife mit 2 Variablen
11.06.2020 14:46:48
Martin
Hallo Lukas,
irgendwie hatte ich mich von der Zeile Set RaBereich = Range("F20") und der Aufgabenstellung mit der zweiten Variable aus dem Konzept bringen lassen. Es wird ja ohnehin jede Zelle in der Variable RaBereich durchlaufen. Eine zweite Variable ist nicht notwendig:
Private Sub Worksheet_Calculate1()
Dim RaBereich As Range                  ' Variable für Bereich
Dim RaZelle As Range                    ' Variable für Zelle
' Bereich der Wirksamkeit
Set RaBereich = Range("F20:F320")
For Each RaZelle In RaBereich           ' überwachten Bereich formatieren
With RaZelle
Select Case .Value              ' Zellinhalt vergleichen
Case Is = ""
.Interior.ColorIndex = 0      ' Füllfarbe leer
.Font.ColorIndex = 1          ' Schriftfarbe Schwarz
Case Is = Cells(.Row, 23).Value
.Interior.ColorIndex = 4      ' Füllfarbe Hellgrün
.Font.ColorIndex = 1          ' Schriftfarbe Schwarz
Case Is = "0"
.Interior.ColorIndex = 4      ' Füllfarbe Hellgrün
.Font.ColorIndex = 1          ' Schriftfarbe Schwarz
Case Else
.Interior.ColorIndex = 0      ' Füllfarbe leer
.Font.ColorIndex = 1          ' Schriftfarbe Schwarz
End Select
End With
Next RaZelle
Set RaBereich = Nothing                 ' Variable leeren
End Sub

Anzeige
AW: For Schleife mit 2 Variablen
11.06.2020 21:37:35
Lukas
Hi Martin,
ich hab das ganze ausprobiert und es hat super geklappt.
Hast mir sehr geholfen, vielen Dank!
Schöne Grüße
Lukas
AW: For Schleife mit 1 Variable
11.06.2020 14:42:57
GerdL
Moin
Private Sub Worksheet_Calculate1()
Dim C As Range                    ' Variable für Zelle
With Range("F20:F319")
.Font.ColorIndex = 1          ' Schriftfarbe Schwarz
For Each C In .Cells
Select Case C.Value              ' Zellinhalt vergleichen
Case 0, Range("W" & C.Row).Value
C.Interior.ColorIndex = 4      ' Füllfarbe Hellgrün
Case Else
C .Interior.ColorIndex = 0      ' Füllfarbe leer
End Select
Next C
End With
End Sub

Gruß Gerd
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

For Schleife mit 2 Variablen in VBA


Schritt-für-Schritt-Anleitung

Um eine For Schleife mit 2 Variablen in VBA zu implementieren, kannst du den folgenden Code verwenden. Dieser Code durchläuft einen definierten Zellbereich und passt die Formatierung basierend auf bestimmten Bedingungen an.

  1. Öffne dein Excel-Dokument und gehe zum VBA-Editor (ALT + F11).
  2. Füge ein neues Modul hinzu oder wähle ein bestehendes Arbeitsblatt aus.
  3. Kopiere den folgenden VBA-Code in das Modul:
Private Sub Worksheet_Calculate()
    Dim RaBereich As Range                  ' Variable für Bereich
    Dim RaZelle As Range                    ' Variable für Zelle
    Dim iRow As Integer

    ' Bereich der Wirksamkeit
    For iRow = 20 To 320
        Set RaBereich = Cells(iRow, 6)
        For Each RaZelle In RaBereich           ' überwachten Bereich formatieren
            With RaZelle
                Select Case .Value              ' Zellinhalt vergleichen
                    Case Is = ""
                        .Interior.ColorIndex = 0      ' Füllfarbe leer
                        .Font.ColorIndex = 1          ' Schriftfarbe Schwarz
                    Case Is = Cells(iRow, 23).Value
                        .Interior.ColorIndex = 4      ' Füllfarbe Hellgrün
                        .Font.ColorIndex = 1          ' Schriftfarbe Schwarz
                    Case Is = "0"
                        .Interior.ColorIndex = 4      ' Füllfarbe Hellgrün
                        .Font.ColorIndex = 1          ' Schriftfarbe Schwarz
                    Case Else
                        .Interior.ColorIndex = 0      ' Füllfarbe leer
                        .Font.ColorIndex = 1          ' Schriftfarbe Schwarz
                End Select
            End With
        Next RaZelle
    Next iRow
    Set RaBereich = Nothing                 ' Variable leeren
End Sub

Dieser Code ermöglicht es dir, die vba for schleife nächste iteration durchzuführen, indem du die Zeilen von 20 bis 320 durchläufst.


Häufige Fehler und Lösungen

  • Fehler: „Typen nicht übereinstimmend“

    • Lösung: Überprüfe, ob du die richtigen Variablen-Typen verwendest, insbesondere für die Bereichsdefinition.
  • Fehler: „Das Makro funktioniert nicht“

    • Lösung: Stelle sicher, dass die Berechnungsoptionen in Excel auf „Automatisch“ eingestellt sind.
  • Fehler: Zellen werden nicht korrekt formatiert

    • Lösung: Überprüfe die Bedingungen in der Select Case-Anweisung. Möglicherweise ist die Zellreferenz nicht korrekt.

Alternative Methoden

Wenn du die For Schleife mit 2 Variablen nicht verwenden möchtest, gibt es auch alternative Methoden wie:

  1. Bedingte Formatierung: Du kannst die bedingte Formatierung in Excel verwenden, um die Zellen dynamisch zu formatieren, ohne VBA zu verwenden.
  2. Array-Methoden: Überlege, ob du die Werte in ein Array laden und dann mit einer Schleife durch das Array iterieren kannst.

Praktische Beispiele

Hier sind einige praktische Beispiele, die dir helfen, die Konzepte besser zu verstehen:

  • Beispiel 1: Formatierung von Zellen basierend auf einem Vergleich zu einem festen Wert.
  • Beispiel 2: Durchlaufen eines Bereichs und Einfärben von Zellen, die leer sind oder „0“ enthalten.

Verwende den folgenden Code, um Zellen in einem bestimmten Bereich zu formatieren:

Private Sub Worksheet_Calculate()
    Dim RaBereich As Range
    Set RaBereich = Range("F20:F320")

    For Each RaZelle In RaBereich
        If RaZelle.Value = "" Then
            RaZelle.Interior.ColorIndex = 0
        ElseIf RaZelle.Value = "0" Then
            RaZelle.Interior.ColorIndex = 4
        End If
    Next RaZelle
End Sub

Tipps für Profis

  • Verwende Option Explicit am Anfang deines Codes, um sicherzustellen, dass alle Variablen deklariert sind.
  • Halte deinen Code modular, indem du Funktionen erstellst, die spezifische Aufgaben ausführen.
  • Nutze die Möglichkeit, Fehler zu behandeln, um die Stabilität deines VBA-Codes zu erhöhen.

FAQ: Häufige Fragen

1. Was ist der Vorteil der Verwendung einer For Schleife in VBA?
Eine For Schleife ermöglicht dir das Durchlaufen von Zellbereichen, um wiederholte Aufgaben effizient zu erledigen.

2. Kann ich auch andere Schleifen anstelle der For Schleife verwenden?
Ja, du kannst auch Do-While oder While-Wend Schleifen verwenden, je nach Bedarf.

3. Gibt es eine maximale Anzahl an Iterationen in einer For Schleife?
Die maximale Anzahl hängt von der Excel-Version und der verfügbaren Speicherkapazität ab, aber in der Praxis sind 32.767 Iterationen pro Schleife möglich.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige