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

Shapes per Makro einfärben

Forumthread: Shapes per Makro einfärben

Shapes per Makro einfärben
30.01.2021 12:26:43
tobi
Servus,
ich möchte gern eine Form (AbgerundetesRechteck14) entweder durch Klick auf eine andere Form, oder durch die Erfüllung einer Bedingung im WorksheetChange die Farbe ändern lassen
Leider bringt mich diese Kleinigkeit zum verzweifeln.
Aktiviere ich das AbgerundeteRechteck14 durch Klick auf dieses selbst, so bekomme ich den Farbwechsel problemlos umgesetzt.
Starte ich das AbgerundeteRechteck14 jedoch über z.B. das AbgerundeteRechteck15, so wird der Farbwechselcode auf das AbgerundeteRechteck15 übertragen.
Diesen Code habe ich auf meinem betroffenen AbgerundetenRechteck14 eingetragen:
Sub AbgerundetesRechteck14_KlickenSieAuf()
ActiveSheet.Unprotect
With ActiveSheet.Shapes(Application.Caller).Fill.ForeColor
If Range("w42") = 1 Then
Range("w42") = 0
.RGB = RGB(242, 0, 0)
Else
Range("w42") = 1
.RGB = RGB(29, 29, 29)
End If
End With
Range("z24").Interior.ColorIndex = 2
ActiveSheet.Protect
End Sub

Folgende Umsetzung fürs WorksheetChange bringt mir leider auch immer Fehlermeldungen:

Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveSheet.Range("W45").Value = 1 then
Range("W42") = 0
ActiveSheet.Shapes("AbgerundetesRechteck14").Fill.ForeColor.RGB = RGB(242, 0, 0)
Else
Range("W42") = 1
ActiveSheet.Shapes("AbgerundetesRechteck14").Fill.ForeColor.RGB = RGB(29, 29, 29)
End If
End Sub

Das AbgerundeteRechteck14 dient mir quasi als An-/Abschalter.
Und die Eigenschaften davon sollen in einen anderen An-/Abschalter integriert werden.
Könnte mir jemand sagen was ich falsch mache, bzw. wie ich es gelöst bekomme?
besten Dank
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Shapes per Makro einfärben
30.01.2021 12:54:23
Daniel
Hi
Wenn du Re14 über Klick auf Re15 umfärben willst, dann musst du im Makro, welches du Re15 zugewiesen hast, bei With auch den Namen von Re14 angeben und nicht Application.Caller.
Application.Caller ist immer der Name das angeklickten Shapes.
Gruß Daniel
AW: Shapes per Makro einfärben
30.01.2021 13:27:02
tobi
Du das klappt irgendwie nicht.
Wenn ich dem Re15 den Befehl Call AbgerundetesRechteck14_KlickenSieAuf gebe,
dann übernimmt er die Funktionen von Re14, aber wie gesagt färbt sich dann das Re15 ein.
Wenn ich dann im Re14 Makro das (Application.Caller) ersetze, funktioniert das Makro selbst auf Klick auf Re14 nicht mehr. Hab verschiedenste Schreibweisen versucht.
(AbgerundetesRechteck14_KlickenSieAuf)
in Anführungszeichen, ohne Anfhührungszeichen, mit Klammer, ohne Klammer...
Anzeige
AW: Shapes per Makro einfärben
30.01.2021 13:38:53
Daniel
Was hast du denn probiert?
Wie sieht das Makro aus, das bei Klick auf Re15 ausgeführt wird?
Bist du sicher, dass du die richtigen Shapenamen verwendest?
AW: Shapes per Makro einfärben
30.01.2021 14:04:09
tobi
Nein, Du hast Recht. Ich habe den falschen Namen verwendet, bzw. falsch geschrieben.
Wo er als Makroname ohne Leerzeichen geschrieben wird, muss er in der With Funktion mit den Leerzeichen angegeben werden ("Abgerundetes Rechteck 14").
Kleine Ursache, große Wirkung.
Ich danke Dir!
Anzeige
;
Anzeige

Infobox / Tutorial

Shapes per Makro einfärben in Excel


Schritt-für-Schritt-Anleitung

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

  1. Shape auswählen: Stelle sicher, dass du die richtigen Shapes (z.B. "AbgerundetesRechteck14") in deinem Arbeitsblatt hast.

  2. Makro erstellen: Öffne den VBA-Editor (ALT + F11) und erstelle ein neues Modul. Füge den folgenden Code ein:

    Sub AbgerundetesRechteck14_KlickenSieAuf()
       ActiveSheet.Unprotect
       With ActiveSheet.Shapes("AbgerundetesRechteck14").Fill.ForeColor
           If Range("W42") = 1 Then
               Range("W42") = 0
               .RGB = RGB(242, 0, 0)
           Else
               Range("W42") = 1
               .RGB = RGB(29, 29, 29)
           End If
       End With
       Range("Z24").Interior.ColorIndex = 2
       ActiveSheet.Protect
    End Sub
  3. WorksheetChange-Ereignis: Füge den folgenden Code in das entsprechende Arbeitsblatt ein, um die Farbe beim Ändern eines Zellwerts zu ändern:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If ActiveSheet.Range("W45").Value = 1 Then
           Range("W42") = 0
           ActiveSheet.Shapes("AbgerundetesRechteck14").Fill.ForeColor.RGB = RGB(242, 0, 0)
       Else
           Range("W42") = 1
           ActiveSheet.Shapes("AbgerundetesRechteck14").Fill.ForeColor.RGB = RGB(29, 29, 29)
       End If
    End Sub
  4. Shape verknüpfen: Verknüpfe die zweite Form (z.B. "AbgerundetesRechteck15") mit dem ersten Makro, indem du den Namen der Form anstelle von Application.Caller verwendest.


Häufige Fehler und Lösungen

  • Falscher Shape-Name: Achte darauf, dass du die genauen Namen der Shapes verwendest. Ein häufiger Fehler ist die Verwendung von Leerzeichen. Beispiel: "Abgerundetes Rechteck 14" muss genau so angegeben werden.

  • Application.Caller: Wenn du Application.Caller verwendest, erhältst du den Namen der Form, die angeklickt wurde. Um eine andere Form zu ändern, musst du explizit den Namen der Ziel-Shape angeben.

  • Fehlermeldungen bei WorksheetChange: Stelle sicher, dass die Bedingung (If ActiveSheet.Range("W45").Value = 1 Then) korrekt ist, um Fehlermeldungen zu vermeiden.


Alternative Methoden

Eine alternative Methode, um die Farbe von Shapes zu ändern, besteht darin, die Shapes über ein Dropdown-Menü oder eine Schaltfläche zu steuern. Hierbei kannst du eine UserForm verwenden, um die Benutzerfreundlichkeit zu erhöhen.


Praktische Beispiele

  1. Farbe ändern mit zwei Shapes: Wenn du einen Button (z.B. "AbgerundetesRechteck15") klickst, soll "AbgerundetesRechteck14" die Farbe ändern:

    Sub AbgerundetesRechteck15_KlickenSieAuf()
       Call AbgerundetesRechteck14_KlickenSieAuf
    End Sub
  2. Bedingte Formatierung: Nutze die Zellwerte, um die Farbe der Shapes zu steuern, z.B. durch ein Feld, das die Benutzerinteraktion ermöglicht.


Tipps für Profis

  • Variablen verwenden: Verwende Variablen, um den Code übersichtlicher zu gestalten.

    Dim shapeName As String
    shapeName = "AbgerundetesRechteck14"
    ActiveSheet.Shapes(shapeName).Fill.ForeColor.RGB = RGB(242, 0, 0)
  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um unerwartete Fehler abzufangen und die Benutzererfahrung zu verbessern.


FAQ: Häufige Fragen

1. Wie kann ich die Farbe eines Shapes ändern, wenn eine Bedingung erfüllt ist?
Du kannst den Worksheet_Change-Event verwenden, um die Farbe basierend auf Zellwerten zu steuern.

2. Was ist der Unterschied zwischen Application.Caller und einem expliziten Shape-Namen?
Application.Caller bezieht sich auf das Shape, das angeklickt wurde. Wenn du ein anderes Shape ändern möchtest, musst du den Namen des Shapes direkt angeben.

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