Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1948to1952
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Freiform mit klick umfärben und symbol oder weitere Freiform

Freiform mit klick umfärben und symbol oder weitere Freiform
04.10.2023 18:51:46
Benzer77
Guten Tag.
Ich habe ein Tb mit 100 Freiform(Ff) Ellipsen in schwarz.
Ich möchte gern das beim anklicken jeder einzelnen Ff sich die Färbe in rot ändert.
Bei einem weiteren klick soll es wieder schwarz werden. Mit einem Makro recording funktioniert es leider nicht. Da kann ich nur einmal die Farbe ändern.
Kann man auch eine weitere Ff in die bestehende einfügen lassen?
Also bei Ellipse schwarz ein - und bei rot ein +?
Bin für tipps und erklärung dankbar.
Mfg Benzer
AW: Freiform mit klick umfärben und symbol oder weitere Freiform
05.10.2023 03:56:54
Oberschlumpf
Hi,

schreib dieses Makro in ein allgemeines Modul...


Sub sbBlackRed()

With ActiveSheet.Shapes.Range(Array(Application.Caller)).Fill
.Visible = msoTrue
If .ForeColor.RGB = RGB(0, 0, 0) Then
.ForeColor.RGB = RGB(255, 0, 0)
Else
.ForeColor.RGB = RGB(0, 0, 0)
End If
.Transparency = 0
.Solid
End With

End Sub

...nun weise dieses Makro erst mal - zum Ausprobieren :-) - 2 oder 3 Formen zu, und guck, was beim Anklicken dieser Formen passiert.
Da sich nun für die Formen, denen du das Makro zugewiesen hast, wie gewünscht, die Hintergrundfarbe zwischen schwarz + rot abwechselt, weise nun das Makro auch allen anderen Formen zu.

Ja, ich weiß, mein Code "löst" nur 1 deiner 2 Fragen.
Aber es gibt ja auch noch andere Antworter ;-)

Konnte ich denn helfen?

Ciao
Thorsten
Anzeige
AW: Freiform mit klick umfärben und symbol oder weitere Freiform
05.10.2023 20:35:55
Benzer
Lieber Thorsten,
danke für deinen Code, er funktioniert. Das mit + & - ist nicht so wichtig, lege eine Legende an.
Besteht die Möglichkeit deinen Code um eine weitere Farbe zu erweitern? Würde gerne noch weiß (255, 255, 255) mit drin haben. Doch dann meckert er das "End If" fehlt wenn ich das mit einfüge.
Gruß Benzer
AW: Freiform mit klick umfärben und symbol oder weitere Freiform
05.10.2023 21:04:05
daniel
Hi
du möchtest, dass bei Klick mehrere Farben durchrolliert werden und nicht nur zwei getauscht werden?
dann mit Select Case so anstelle des IFs.

Select Case .ForeColor.RGB

Case Farbe1: .ForeColor.RGB = Farbe2
Case Farbe2: .ForeColor.RGB = Farbe3
Case Else: .ForeColor.RGB = Farbe1
End Select


Für Farbe1, 2, 3 bitte die entsprechenden RGB-Werte einsetzen.

Gruß Daniel
Anzeige
AW: Freiform mit klick umfärben und symbol oder weitere Freiform
05.10.2023 22:05:19
Benzer
Danke Daniel für die schnelle Antwort.

jedoch wenn ich es einsetze bekomme ich den Fehler
" Laufzeitfehler 1004"
"Der Index in der angegebenen Sammlung ist außerhalb des zulässigen Bereiches."

Sub wsbBlackRed()


With ActiveSheet.Shapes.Range(Array(Application.Caller)).Fill
.Visible = msoTrue
Select Case .ForeColor.RGB
Case Farbe1: .ForeColor.RGB = RGB(0, 0, 0)
Case Farbe2: .ForeColor.RGB = RGB(255, 0, 0)
Case Else: .ForeColor.RGB = RGB(255, 255, 255)
End Select
End With
End Sub


Was hab ich falsch gemacht?
Gruß Benzer
Anzeige
AW: Freiform mit klick umfärben und symbol oder weitere Freiform
06.10.2023 11:07:03
daniel
Hi

der erste Fehler ist ein VBA-Bug, weil Microsoft gelegentlich seiner eigenen Weiterentwicklung hinterher hinkt:
Application.Caller hat nur 30 Zeichen und schneidet längere Namen ab.
Die Namen der Buttons, die du verwendest, sind aber länger und werden daher abgeschnitten. Damit verwendest du einen falschen Namen als Index.
Du kannst also entweder andere Grafikelemente mit kürzerem automatischen Namen verwenden, oder du benennst deine Elemente auf einen kürzeren Namen um.

der zweite Fehler ist, dass du nicht alle meine "FarbeX" durch den Wert ersetzt hast, sondern nur 3 von 5 (auch die bei Case)
also auch hier die Werte eintragen oder entsprechende Variablen anlegen.
Gruß Daniel
Anzeige
AW: Freiform mit klick umfärben und symbol oder weitere Freiform
06.10.2023 16:56:30
Benzer77
Sorry Daniel,
Evtl. Hab ich mich überschätzt mit Basic Wissen in VBA.
Ich habe leider nicht verstanden was ich wo ändern oder anpassen muss.
Gruß Benzer
AW: Freiform mit klick umfärben und symbol oder weitere Freiform
07.10.2023 22:55:44
Benzer
Moin,
Hab es jetzt so geändert.
Sub wsbBlackRed()


With ActiveSheet.Shapes.Range(Array(Application.Caller)).Fill
.Visible = msoTrue

Select Case .ForeColor.RGB
Case vbWhite: .ForeColor.RGB = vbBlack
Case vbBlack: .ForeColor.RGB = vbRed
Case Else: .ForeColor.RGB = vbWhite
End Select
End With
End Sub

jedoch funktioniert es nicht, da ich die Farbcodes mit Variablen(?) verknüpfen muss...?
Kann mir jemand sagen wie ich das machen muss?
Gruß Benzer
Anzeige
AW: Freiform mit klick umfärben und symbol oder weitere Freiform
08.10.2023 07:56:10
Oberschlumpf
Hi,

dein Fehler:
- mit Select überprüfst du .ForeColor.RGB
- in Case erwartest du als Ergebnis deiner Überprüfung vbWhite oder vbBlack - DAS geht so nicht!!!
anstelle von vbWhite oder vbBlack MUSST du natürlich auch RGB(...) angeben!

ersetz in deinem Code also vbWhite durch RGB(255, 255, 255)
und anstelle von vbBlack schreib RGB(0, 0, 0)

Bei mir funktionierts so - bei dir auch?

Ciao
Thorsten
AW: Freiform mit klick umfärben und symbol oder weitere Freiform
08.10.2023 13:39:03
Benzer77
Moin, nein leider nicht, dann kommt ein Laufzeitfehler, weil die Zeile zu lang ist. Deshalb dachte ich ich machs mit dem vbFarbe. Jedoch ist mir klar, dass ich das definieren muss. Deshalb die Frage wie das geht.
Gruß Benzer
Anzeige
AW: Freiform mit klick umfärben und symbol oder weitere Freiform
08.10.2023 14:29:06
GerdL
Moin

Sub Black_Red_White()


With ActiveSheet.Shapes(Application.Caller).Fill
Select Case .ForeColor.RGB
Case RGB(0, 0, 0): .ForeColor.RGB = RGB(255, 0, 0)
Case RGB(255, 0, 0): .ForeColor.RGB = RGB(255, 255, 255)
Case Else: .ForeColor.RGB = RGB(0, 0, 0)
End Select
End With

End Sub


Gruß Gerd
AW: Freiform mit klick umfärben und symbol oder weitere Freiform
08.10.2023 16:47:09
Benzer77
Moin,
Ja genau Gerd, das hab ich so geschrieben.
Jedoch bekomme ich einen Laufzeitfehler.
(Ausserhalb des Index)
Daniel schrieb, das es ein MS-Bug sei.
Weil die Textzeile nach dem = Zeichen mehr als 30 Stellen hat und alles über 30 Zeichen abgeschnitten wird. Deshalb wollte ich die RGB (...) einkürzen und hab VbFarbe eingetragen. Das funktioniert ja nicht, nur dafür fehlen mir die Kenntnisse das im VBA umzusetzen. Deshalb die Frage, muss dafür das gesamte Skript anders aufgebaut werden oder kann man hier String, Arrays oder, oder, oder einsetzen.
Gruß Benzer
Anzeige
AW: Freiform mit klick umfärben und symbol oder weitere Freiform
08.10.2023 17:01:02
Oberschlumpf
und wieso änderst du nicht die zu langen Namen der Formen?
Das hatte dir daniel doch schon vorgeschlagen.

- mit 1 Klick 1 Form auswählen (das Makro, das zum Fehler führt vllt erst mal ausschalten)
- oben links steht der Name der Form (da, wo sonst die Zelle steht, die du ausgewählt hast)
- da rein klicken, viel kürzeren Namen eintragen, Enter drücken
- erst mal mit nur n paar weiteren Formen wiederholen
- nun wieder Makro einschalten
- mit den Formen ausprobieren, bei denen du den Namen gekürzt hast

wenns jetzt immer noch nich funktioniert, dann kann dir wohl nur noch wer helfen, der neben dir sitzt
Anzeige
AW: Freiform mit klick umfärben und symbol oder weitere Freiform
08.10.2023 17:17:43
GerdL
Da liegt offenbar ein Mißverständnis vor.

Ohne Garantie für garnix.
Sub test()


Dim Sh As Shape

For Each Sh In ActiveSheet.Shapes
Sh.OLEFormat.Object.Name = Left(Sh.OLEFormat.Object.Name, 30)
Next

End Sub


Gruß Gerd

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige