SchemColor Index in Excel VBA nutzen
Schritt-für-Schritt-Anleitung
-
Shapes erstellen: Erstelle ein Shape in Excel VBA und positioniere es anhand der aktiven Zelle.
With ActiveCell
ActiveSheet.Shapes.AddShape(msoShapeOval, .Left, .Top, .Width, .Height).Select
End With
-
Farbe zuweisen: Verwende die .Fill.ForeColor.RGB
-Eigenschaft, um die Farbe des Shapes entsprechend der Zellfarbe zu setzen.
With Selection.ShapeRange.Fill
.ForeColor.RGB = Worksheets("Aufgaben").Range("B12").Interior.Color
End With
-
Linienfarbe setzen: Wenn du auch die Linienfarbe ändern möchtest, kannst du dies ähnlich tun:
With Selection.ShapeRange.Line
.ForeColor.RGB = Worksheets("Aufgaben").Range("B12").Interior.Color
End With
Häufige Fehler und Lösungen
-
Fehler: "Ausserhalb des zulässigen Bereichs": Dieser Fehler tritt häufig auf, wenn der Bezug zu einer nicht existierenden Zelle erfolgt. Stelle sicher, dass der Bereich Worksheets("Aufgaben").Range("B12")
korrekt ist und die Zelle existiert.
-
Falsche Verwendung von .Interior.Color
: Stelle sicher, dass du .Interior.Color
und nicht .Interior.ColorIndex
verwendest, um die RGB-Werte der Zelle korrekt zu bekommen.
Alternative Methoden
Statt die SchemeColor
-Eigenschaft zu verwenden, kannst du auch die RGB-Werte direkt abrufen. Verwende die Interior.Color
-Eigenschaft, um die Farbe einer Zelle zu erhalten. Dies ist besonders nützlich, wenn du mit benutzerdefinierten Farben arbeitest.
Praktische Beispiele
Angenommen, du hast eine Excel-Tabelle mit verschiedenen Zellfarben und möchtest diese Farben auf Shapes anwenden. Hier ist ein Beispiel für ein Skript, das alle Shapes auf einem Arbeitsblatt anpasst:
Sub ShapesFarbeAnpassen()
Dim shp As Shape
Dim rng As Range
Set rng = Worksheets("Aufgaben").Range("B1:B10")
For Each shp In ActiveSheet.Shapes
If Not Intersect(shp.TopLeftCell, rng) Is Nothing Then
shp.Fill.ForeColor.RGB = shp.TopLeftCell.Interior.Color
End If
Next shp
End Sub
Tipps für Profis
-
Verwende RGB statt SchemeColor: Die Verwendung von RGB ist flexibler und ermöglicht es dir, jede beliebige Farbe zu nutzen. Die forecolor.vba
-Eigenschaft ist hierbei besonders nützlich.
-
VBA IntelliSense: Nutze den VBA IntelliSense, um dir die verfügbaren Eigenschaften und Methoden anzeigen zu lassen. Dies kann dir helfen, Fehler zu vermeiden und deinen Code effizienter zu gestalten.
FAQ: Häufige Fragen
1. Gibt es eine Möglichkeit, den SchemeColor Index zu bekommen?
Nein, der SchemeColor
Index ist in der aktuellen Version von Excel VBA nicht verfügbar. Stattdessen solltest du RGB-Farben verwenden.
2. Wie kann ich die Farben mehrerer Shapes auf einmal anpassen?
Du kannst eine Schleife verwenden, um durch alle Shapes auf einem Arbeitsblatt zu iterieren und deren Farben entsprechend den Zellen zu setzen, wie im praktischen Beispiel gezeigt.