Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA abhängig von Zellfarbe ausführen

VBA abhängig von Zellfarbe ausführen
17.02.2018 20:20:04
Zellfarbe
Hallo zusammen,
ich mal wieder.
Ich möchte eine Funktion (eine oder merhere ausgewählte Zellen mit bestimmten Buchstaben füllen)
erst dann anschieben, wenn keine der gewählten Zellen mit der Farbe 43 gefüllt ist/sind.

Sub Farbentest()
With Selection.Interior
If Selection.Interior.ColorIndex = 43 Then
MsgBox "Zellen mit Farbnummer 43"
Else: MsgBox "Zellen ohne Farbnummer 43"
End If
End With
End Sub
Ich bekomme nur eine Zelle hin.
Was läuft da falsch?
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA abhängig von Zellfarbe ausführen
17.02.2018 20:32:12
Zellfarbe
Hallo Torsten,
du musst jede Zelle einzeln prüfen.
Sub Farbentest()
Dim objCell As Range

For Each objCell In Selection
  If objCell.Interior.ColorIndex <> 43 Then
    'dein Code 
  End If
Next
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

Gruß Sepp

Anzeige
AW: VBA abhängig von Zellfarbe ausführen
17.02.2018 20:44:32
Zellfarbe
Hallo Sepp,
Danke für die schnelle Antwort.
Ok soweit.
Das klappt.
Jedoch bei 40 markierten Zellen, klickt man sich 40mal durch.
Kann man das Ganze auch mit einer Schleife lösen?
AW: VBA abhängig von Zellfarbe ausführen
17.02.2018 20:51:06
Zellfarbe
Hallo Torsten
was meinst du mit "klickt man sich 40mal durch", bei meinem Code wird nicht geklickt!
Gruß Sepp

Anzeige
AW: VBA abhängig von Zellfarbe ausführen
17.02.2018 21:03:37
Zellfarbe
Naja, war n bissel umständlich beschrieben.
Zum Testen habe ich eine msgbox eingefügt.
Diese ploppte nun 40 mal auf.
Wenn ich nun z.B. den Bereich A1 bis E20 markiere und davon nur die Zelle D6 grün (Farb Nr.43) enthält, dann reagiert der Code nicht auf die grüne Zelle.
Daher die Frage ob man alle Zellen im markiertem Bereich mit einer Schleife abfragen muss/kann?
Und wenn ja, kannst du mir da sagen wie dies läuft.
Anzeige
AW: VBA abhängig von Zellfarbe ausführen
17.02.2018 21:07:51
Zellfarbe
Hallo Torsten,
mein Code prüft alle Zellen im markierten Bereich!
Ich kann ja nicht wissen, was dann geschehen soll, du solltest also genauer beschreiben, was du dir erwartest.
Gruß Sepp

Anzeige
AW: VBA abhängig von Zellfarbe ausführen
17.02.2018 21:13:12
Zellfarbe
Der Tabellennutzer wählt eine oder mehrere Zellen gleichzeitig aus.
Dann folgt eine Funktion.
Die Funktion hat aber die Bedingung das alle der gewählten Zellen nicht mit dem Farbcode 43 gefüllt sind.
Ist eine der gewählten Zellen mit dem Farbcode 43 gefüllt = exit sub
AW: VBA abhängig von Zellfarbe ausführen
17.02.2018 21:20:36
Zellfarbe
Habs nochmal mit deinem Code ausprobiert.
Er reagiert nur auf den Status der ersten Zelle
Anzeige
AW: VBA abhängig von Zellfarbe ausführen
17.02.2018 21:24:33
Zellfarbe
Hey Sepp!!!!
Sorry!!!
Hat sich erledigt.
Mein Fehler.
Jetzt habe ich es.
Danke
AW: VBA abhängig von Zellfarbe ausführen
17.02.2018 21:25:04
Zellfarbe
Hallo Torsten,
dann halt so.
Sub Farbentest()
Dim objCell As Range

For Each objCell In Selection
  If objCell.Interior.ColorIndex = 43 Then Exit Sub
Next

'dein Code 

End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

Gruß Sepp

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA abhängig von Zellfarbe ausführen


Schritt-für-Schritt-Anleitung

Um eine VBA-Funktion abhängig von der Zellfarbe auszuführen, musst du sicherstellen, dass du jede Zelle im ausgewählten Bereich einzeln überprüfst. Hier ist eine Schritt-für-Schritt-Anleitung, die dir zeigt, wie du das machst:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Rechtsklicke im Projektfenster auf "VBAProject (DeineDatei.xlsx)" und wähle Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub Farbentest()
        Dim objCell As Range
        For Each objCell In Selection
            If objCell.Interior.ColorIndex = 43 Then
                Exit Sub
            End If
        Next
        ' Hier deinen Code einfügen
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Wähle die Zellen aus, die du überprüfen möchtest.

  6. Führe das Makro aus: Drücke ALT + F8, wähle Farbentest aus und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehler: Das Makro reagiert nur auf die erste Zelle.

    • Lösung: Stelle sicher, dass du die Schleife über alle Zellen im markierten Bereich korrekt implementiert hast. Der obige Code prüft jede Zelle einzeln.
  • Fehler: Das Makro führt nicht die gewünschte Aktion aus.

    • Lösung: Überprüfe, ob der Code innerhalb der Schleife korrekt platziert ist und dass die Bedingungen stimmen.

Alternative Methoden

Eine alternative Methode, um zu prüfen, ob eine Zelle eine bestimmte Farbe hat, ist die Verwendung des CountIf-Befehls in Excel, jedoch ist dies nicht für VBA spezifisch. Für VBA-Entwickler ist die Schleife über jede Zelle die beste Methode, um eine detaillierte Kontrolle zu haben.


Praktische Beispiele

  1. Beispiel: Wenn du eine Nachricht anzeigen möchtest, wenn eine Zelle die Farbe 43 hat:

    Sub Farbentest()
        Dim objCell As Range
        For Each objCell In Selection
            If objCell.Interior.ColorIndex = 43 Then
                MsgBox "Diese Zelle ist grün!"
                Exit Sub
            End If
        Next
        MsgBox "Keine Zellen mit Farbnummer 43 gefunden."
    End Sub
  2. Beispiel: Füllung einer Zelle, wenn alle Zellen eine andere Farbe haben:

    Sub Farbentest()
        Dim objCell As Range
        Dim allClear As Boolean
        allClear = True
    
        For Each objCell In Selection
            If objCell.Interior.ColorIndex = 43 Then
                allClear = False
                Exit For
            End If
        Next
    
        If allClear Then
            Selection.Value = "Alle Zellen sind OK"
        End If
    End Sub

Tipps für Profis

  • Nutze Fehlerbehandlung in deinem VBA-Code, um unerwartete Probleme zu vermeiden. Ein einfacher On Error Resume Next kann helfen.
  • Teste deinen Code regelmäßig, um sicherzustellen, dass er in verschiedenen Szenarien funktioniert.
  • Dokumentiere deinen Code gut, damit andere (oder du selbst in der Zukunft) verstehen, was der Code macht.

FAQ: Häufige Fragen

1. Wie kann ich die Farbe einer Zelle ändern?
Du kannst die Farbe einer Zelle mit dem folgenden Code ändern:

Selection.Interior.ColorIndex = 43 'Ändert die Zellenfarbe auf grün

2. Was passiert, wenn ich eine leere Zelle auswähle?
Leere Zellen haben keine Farbe, sodass der Code keine Aktion ausführt, wenn die Zelle leer ist. Stelle sicher, dass du dies in deinem Code berücksichtigst, falls nötig.

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