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

SchemColor Index

Forumthread: SchemColor Index

SchemColor Index
11.01.2017 10:40:46
Gregor
Hallo
Ich erstell per vba ein Portfolio mit Shapes. Diesen Shapes will ich die gleiche Farbe wie den entsprechenden Zellen zuordnen.
With ActiveCell
ActiveSheet.Shapes.AddShape(msoShapeOval, .Left, .Top, .Width, .Height).Select
With Selection.ShapeRange.Fill
.ForeColor.SchemeColor = 30
End With
With Selection.ShapeRange.Line
.ForeColor.SchemeColor = 30
End With
End With
Wie kann ich den SchemeColor.Index einer Zelle ermitteln, wie es beim Interior.ColorIndex möglich ist (Cells(1, 1) = Cells(1, 2).Interior.ColorIndex)?
Vielen Dank und Gruss
Gregor
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
SchemeColorIndex gibt's nicht (mehr), ...
11.01.2017 15:07:29
Luc:-?
…Gregor,
warum auch, denn .ShapeRange.Fill.ForeColor.SchemeColor konnte schon seit langem RGB-Farben annehmen, nur das Range-Objekt war früher eingeschränkt. Es gibt ihn für Letzteres zwar immer noch, er ist nun aber mehrdeutig und kann auch für optisch unter­scheidbare Farben den gleichen Wert haben. Also wird umgekehrt ein Schuh draus und du musst die Range(…).Interior.Color auslesen, nicht den .ColorIndex!
Übrigens gab's mE den .SchemeColorIndex mal. Er wich aber auch vom .ColorIndex ab, da er einen Einschub (mit Farb­wieder­holun­gen) enthielt und so auf >56 Positionen kam.
Gruß, Luc :-?
Besser informiert mit …
Anzeige
AW: SchemeColorIndex gibt's nicht (mehr), ...
11.01.2017 16:58:23
Gregor
Hoi Luc
Danke für deine Antwort.
Ich habe folgendes eingesetzt, erzeugt jedoch einen Fehler:
With Selection.ShapeRange.Fill
.ForeColor.Interior.Color = 30
und
With Selection.ShapeRange.Line
.ForeColor.Interior.Color = 30
Ich will einfach die Zellfarbe abrufen und den Shape mit dieser Farbe versehen. Wie kann ich das machen?
Danke und Gruss
Gregor
Anzeige
Beachte den VBE-Intellisense, ...
11.01.2017 22:15:02
Luc:-?
…Gregor,
denn der würde hier nichts anzeigen und beim Kompilieren des Codes würde dort ein Fehler gemeldet wdn.
Die korrekte Syntax hatte ich schon in meiner 1.AW gezeigt:
Selection.ShapeRange.Fill.ForeColor.SchemeColor = Range("…").Interior.Color
… ist dabei durch die Adresse der Zelle, von der die ZellFarbe übernommen wdn soll, zu ersetzen.
Luc :-?
Anzeige
AW: Beachte den VBE-Intellisense, ...
12.01.2017 07:48:26
Gregor
Hoi Luc
Danke nochmals. Also ich habe jetzt folgendes eingesetzt, erhalte aber eine Fehlermeldung (ausserhalb des zulässigen Bereichs):
With Selection.ShapeRange.Fill
.ForeColor.SchemeColor = Worksheets("Aufgaben").Range("B12").Interior.Color
End With
Wieso das denn?
Danke und Gruss
Gregor
Anzeige
Vergiss 'SchemeColor', ...
17.01.2017 00:39:12
Luc:-?
…Gregor,
nimm RGB!
    With Selection.ShapeRange.Fill
.ForeColor.RGB = Worksheets("Aufgaben").Range("B12").Interior.Color
End With
Gruß, Luc :-?
AW: Vergiss 'SchemeColor', ...
17.01.2017 07:41:28
Gregor
Hallo Luc
So klappt's, vielen Dank.
Gruss Gregor
Bitte sehr! owT
17.01.2017 13:34:32
Luc:-?
:-?
Anzeige
;
Anzeige

Infobox / Tutorial

SchemColor Index in Excel VBA nutzen


Schritt-für-Schritt-Anleitung

  1. 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
  2. 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
  3. 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.

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