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

Farbe von Shape aendern

Forumthread: Farbe von Shape aendern

Farbe von Shape aendern
16.04.2018 20:22:53
Shape
Hallo Liebe Forumgemeinde,
kann mir bitte jemand bei folgendem Thema helfen?
Ich habe in einem Sheet 65 kreise welche die Farbe wechseln sollen
beim anklicken.
1x Klick >Gruen
2x Klick >Rot
der folgende code funktioniert zwar, jedoch moechte 65 mal stehen haben.
Suche nach der funktion um dem Code zu sagen, damit sich dieser quasi nach der Maus orientiert wenn dies gehen sollte.
Besten Dank schon mal.
Option Explicit
Sub Fillcolor()
ActiveSheet.Shapes.Range(Array("Point4")).Select
If Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 0) Then
Selection.ShapeRange.Fill.Visible = msoTrue
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 128, 0)
Else
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 0)
End If
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Application.Caller
16.04.2018 21:31:34
Fennek
Hallo,
versuche es mal so:
Zuerst per Makro allen Shapes ein Makro zuweisen:

Sub Vorbereitung()
Dim Shp As Shape
For Each Shp In ActiveSheet.Shapes
Shp.OnAction = "App_Call"
Next Shp
End Sub
und dann damit die Farbe wechseln:

Sub App_Call()
Dim WS As Worksheet: Set WS = ActiveSheet
'Debug.Print Application.Caller
'ws.Shapes(1).Fill.ForeColor
With WS.Shapes(Application.Caller).Fill.ForeColor
.RGB = IIf(.RGB = RGB(0, 255, 0), RGB(255, 0, 0), RGB(0, 255, 0)) 'IIf(.Fill.ForeColor =  _
vbRed, vbGreen, vbRed)
End With
End Sub
mfg
Anzeige
AW: Application.Caller
16.04.2018 22:00:44
Hans
Super. Vielen Dank.
Funktioniert wie gewollt.
;
Anzeige

Infobox / Tutorial

Farbe von Shape ändern in Excel VBA


Schritt-für-Schritt-Anleitung

Um die Farbe von Shapes in Excel VBA zu ändern, kannst du folgende Schritte befolgen:

  1. Shapes mit einem Makro verknüpfen: Zuerst musst du sicherstellen, dass alle Shapes in deinem Arbeitsblatt mit einem Makro verknüpft sind. Verwende dazu den folgenden Code:

    Sub Vorbereitung()
       Dim Shp As Shape
       For Each Shp In ActiveSheet.Shapes
           Shp.OnAction = "App_Call"
       Next Shp
    End Sub
  2. Makro zur Farbänderung erstellen: Erstelle ein weiteres Makro, das die Farbe des Shapes ändert, wenn es angeklickt wird:

    Sub App_Call()
       Dim WS As Worksheet: Set WS = ActiveSheet
       With WS.Shapes(Application.Caller).Fill.ForeColor
           .RGB = IIf(.RGB = RGB(0, 255, 0), RGB(255, 0, 0), RGB(0, 255, 0))
       End With
    End Sub
  3. Makro ausführen: Führe das Vorbereitung-Makro aus, um die Shapes mit dem App_Call-Makro zu verknüpfen. Danach kannst du die Shapes durch Klicken in Grün oder Rot wechseln.


Häufige Fehler und Lösungen

  • Fehler: Shape wird nicht gefunden
    Lösung: Stelle sicher, dass die Namen der Shapes korrekt sind und dass du das Makro auf das richtige Arbeitsblatt anwendest.

  • Fehler: Keine Farbänderung
    Lösung: Überprüfe, ob das Makro App_Call korrekt zugewiesen wurde. Führe das Vorbereitung-Makro erneut aus, um sicherzustellen, dass alle Shapes verknüpft sind.


Alternative Methoden

Eine andere Methode, um die Farbe von Shapes zu ändern, ist die direkte Verwendung von ActiveSheet.Shapes in Verbindung mit Application.Caller. Diese Methode ist besonders nützlich, wenn du spezifische Shapes ansprechen möchtest:

Sub ChangeShapeColor()
    Dim shp As Shape
    Set shp = ActiveSheet.Shapes(Application.Caller)
    If shp.Fill.ForeColor.RGB = RGB(255, 0, 0) Then
        shp.Fill.ForeColor.RGB = RGB(0, 255, 0)
    Else
        shp.Fill.ForeColor.RGB = RGB(255, 0, 0)
    End If
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du die Farbänderung für verschiedene Shapes umsetzen kannst:

  1. Kreis-Shape: Du kannst das oben genannte Makro für ein Kreis-Shape verwenden, indem du es entsprechend benennst.

  2. Rechteck-Shape: Das gleiche Prinzip gilt für Rechteck-Shapes. Stelle sicher, dass der Name des Shapes in der App_Call-Methode korrekt ist.

  3. Mehrere Shapes: Wenn du mehrere Shapes hast, kannst du das Vorbereitung-Makro einmal ausführen, um die Zuweisungen für alle Shapes vorzunehmen.


Tipps für Profis

  • Benennung der Shapes: Achte darauf, dass du deine Shapes klar benennst, um Verwirrung zu vermeiden, besonders wenn du viele Shapes in deinem Arbeitsblatt hast.

  • Farbänderung mit anderen Bedingungen: Du kannst die Farbänderung anpassen, indem du mehr Bedingungen im IIf-Statement hinzufügst.

  • Debugging: Nutze Debug.Print innerhalb deines Codes, um den Status von Variablen zu überprüfen und Probleme schneller zu identifizieren.


FAQ: Häufige Fragen

1. Wie viele Shapes kann ich gleichzeitig ansprechen?
Du kannst so viele Shapes ansprechen, wie du benötigst, solange sie im aktiven Arbeitsblatt vorhanden sind. Jedes Shape benötigt jedoch eine eigene Zuweisung.

2. Funktioniert dieses Beispiel in allen Excel-Versionen?
Ja, der VBA-Code sollte in den meisten modernen Excel-Versionen funktionieren, solange VBA unterstützt wird.

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