Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1168to1172
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

Shape-Objekte formatieren ???

Shape-Objekte formatieren ?
Stefan
Hallo zusammen,
ich habe ein kleines Problem bei der Formatierung von selbstgebauten Auswahlbuttons.
Nach dem draufklicken soll sich der jeweilge Button verfärben und so die Auswahl signalisieren.
Das mit der Farbe geht auch, nur bei der Änderung der Schriftfarbe bekomme ich eine Fehlermeldung.
Also alles, was in dem unten stehenden Code mit .Fill beginnt funktioniert, alles was mit .Font beginnt produziert einen Fehler. Könnt Ihr mir bitte bei der korrekten Schreibweise behilflich sein ?
With ActiveSheet.Shapes.Range(Array("AutoShape 975", "AutoShape 976", _
"AutoShape 977", "AutoShape 978"))
.Fill.Visible = msoTrue
.Fill.ForeColor.SchemeColor = 22
.Fill.BackColor.SchemeColor = 9
.Fill.TwoColorGradient msoGradientHorizontal, 3
.Font.ColorIndex = xlAutomatic
.Font.Underline = xlUnderlineStyleNone
.Font.Size = 11
End With
Vielen Dank im Voraus.
Gruß
Stefan

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Shape-Objekte formatieren ?
03.08.2010 11:04:53
Ramses
Hallo
Der Makrorekorder offenbart es
With Selection.Characters(Start:=1, Length:=17).Font
.Name = "Arial"
.FontStyle = "Standard"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 3
End With
Gruss Rainer
AW: Shape-Objekte formatieren ?
03.08.2010 11:08:58
Stefan
Hallo Rainer,
danke für die Rückmeldung. Ich will auf jeden Fall 'Select' vermeiden, daher mein Versuch mit dem Shape.Range. ...
Meinst Du, die Formatierung des Textes geht nicht ohne Select ?
Gruß
Stefan
Anzeige
AW: Shape-Objekte formatieren ?
03.08.2010 11:12:50
Ramses
Hallo
Es geht doch nicht um "Select",.... sondern das was ich FETT dargestellt habe.
Gruss Rainer
AW: Shape-Objekte formatieren ?
03.08.2010 11:30:53
Stefan
Du hast schon meinen VBA-Status gesehen ?
Was bedeutet denn das Characters ? Worauf bezieht sich das denn (1 - 17) ?
So, wie Du das geschrieben hast, wurde doch vorher etwas selektiert !?
Ich mag mich ja ein wenig schusselig anstellen, aber vielleicht gibst Du mir trotzdem noch ein wenig Starthilfe :-)
Besten Dank.
Gruß
Stefan
AW: Shape-Objekte formatieren ?
03.08.2010 11:53:02
Ramses
Hallo
Dein VBA-Status interessiert mich nicht, wenn du solche Codes mit Shape-Array's hier reinstellst.
Auch entbindet dein VBA -Status dich nicht, dein Gehirn einzuschalten und nachzudenken :-)
Ich habe dich auch darauf hingewiesen, dass es um das FETT-Geschriebene in meinem Beitrag geht.
Wenn du wie in deinem Beispiel nur mit ".Font" arbeitest, weiss EXCEL doch nicht was es machen soll, d.h. WELCHEN Text es verändern soll. Ausserdem kann es das Object so gar nicht ansprechen. Dies funktioniert eben nur mit Select, wenn du die Farbe global verändern willst
With ActiveSheet.Shapes.Range(Array("AutoShape 975", "AutoShape 976", _
"AutoShape 977", "AutoShape 978"))
.Fill.Visible = msoTrue
.Fill.ForeColor.SchemeColor = 22
.Fill.BackColor.SchemeColor = 9
.Fill.TwoColorGradient msoGradientHorizontal, 3
.Characters(Start:=1, Length:=17).Font.ColorIndex = xlAutomatic
.Characters(Start:=1, Length:=17).Font.Underline = xlUnderlineStyleNone
.Characters(Start:=1, Length:=17).Font.Size = 11

End With
oder etwas einfacher vielleicht
With ActiveSheet.Shapes.Range(Array("AutoShape 975", "AutoShape 976", _
"AutoShape 977", "AutoShape 978"))
.Fill.Visible = msoTrue
.Fill.ForeColor.SchemeColor = 22
.Fill.BackColor.SchemeColor = 9
.Fill.TwoColorGradient msoGradientHorizontal, 3
With .Characters(Start:=1, Length:=17)
.Font.ColorIndex = xlAutomatic
.Font.Underline = xlUnderlineStyleNone
.Font.Size = 11
End With

End With
Wenn es um die globale Textfarbe für den gesamten Text in der Box geht, kann man das auch so lösen
With ActiveSheet.Shapes.Range(Array("AutoShape 975", "AutoShape 976", _
"AutoShape 977", "AutoShape 978"))
.Fill.Visible = msoTrue
.Fill.ForeColor.SchemeColor = 22
.Fill.BackColor.SchemeColor = 9
.Fill.TwoColorGradient msoGradientHorizontal, 3
With .OLEFormat.Object
.Font.ColorIndex = xlAutomatic
.Font.Underline = xlUnderlineStyleNone
.Font.Size = 11
End With

End With
Gruss Rainer
Anzeige
Sorry...
03.08.2010 11:54:34
Ramses
Hallo
... kommt vielleicht härter rüber als gewollt :-)
Gruss Rainer
AW: Sorry...
03.08.2010 12:19:22
Stefan
Hallo Rainer,
ich bin ja kein Mädchen...
So wie in Beispiel 3 (globale Textfarbe) kann ich das nachvollziehen. Hier fehlt ja jetzt auch das Select wieder. Leider macht er bei 'With .OLEFormat.Object' die Fehlermeldung 'Objekt unterstützt diese Eigenschaft oder Funktion nicht'. Hm....
Ich frag auch ganz leise... hast Du eine Idee, woran das liegt ? :-)
Danke für Deine Mühe, hab wieder ein Stückchen dazu gelernt.
Gruß
Stefan
AW: Sorry...
03.08.2010 13:45:45
Ramses
Hallo
"..Hier fehlt ja jetzt auch das Select wieder...:"
Das ist in beiden oberen Beispielen auch schon nicht mehr da.
Woran das liegt ? Keine Ahnung. Höchstens dass dies im Array nicht funktioniert, sondern du jedes Shape einzeln ansprechen müsstest.
Schleife durch das Array und zuweisen. Mal probieren. Alternativ die Datei mal hochladen mit anonymisierten Daten
Gruss Rainer
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige