Text in Zeichnungselementen formatieren

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Frame
Bild

Betrifft: Text in Zeichnungselementen formatieren
von: Lutz Janne
Geschrieben am: 14.09.2015 20:53:20

Grüßt Euch,
ich habe eine Anwendung, die eigentlich nur extremst grenzwertig zu Excel gehört. In dieser gibt es verschiedene Formen (Form1), die je nach Aktivität unterschiedliche Farben annehmen (von weiß bis dunkelblau). Darauf befinden sich als zusätzliche Formen (Form2)solche, die einen Text beinhalten und die Form1 näher beschreiben. Je nach Farbe der Form1 ist der Text Text nun zu hell oder zu dunkel. Ich möchte daher per VBA die Textfarbe ändern (in schwarz oder weiß). Wichtig ist mir dabei, dass ich möglichst die Form2 an sich nicht selcten möchte, das sorgt m. E. für eine Verlangsamung des Prozesses.
Wie ich allerdings ohne ein Select in einer VBA Zeile die Farbe ändere, ist mir verschlossen geblieben. Kann mir einer von Euch helfen?
Grüße
Lutz.

Bild

Betrifft: AW: Text in Zeichnungselementen formatieren
von: Sepp
Geschrieben am: 14.09.2015 20:56:09
Hallo Lutz,
sprichst du jetzt von Formen, oder von Zellen?

Gruß Sepp


Bild

Betrifft: AW: Text in Zeichnungselementen formatieren
von: Lutz
Geschrieben am: 14.09.2015 21:13:55
Hallo Sepp,
ich spreche von Formen, früher hießen die - glaube ich - Zeichnungselemente.
Grüße.

Bild

Betrifft: AW: Text in Zeichnungselementen formatieren
von: Sepp
Geschrieben am: 14.09.2015 22:20:07
Hallo Lutz,
zwei Beispiele. Die Namen der Tabelle und der Formen musst du natürlich anpassen!

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub SchwarzWeiss()

Sheets("Tabelle2").Shapes("Form2").TextFrame2.TextRange.Font.Fill.ForeColor.RGB = vbWhite 'vbBlack

End Sub


Sub Kontrast()
Dim objShp1 As Shape, objShp2 As Shape

Set objShp1 = Sheets("Tabelle2").Shapes("Form1")
Set objShp2 = Sheets("Tabelle2").Shapes("Form2")


objShp2.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = contrastLong(objShp1.Fill.ForeColor)

End Sub


Private Function contrastLong(ByVal Color As Long, Optional ByVal weighted As Boolean = False) As Long
Dim brightnes As Integer, red As Integer, green As Integer, blue As Integer

red = Color And 255
green = (Color \ 256) And 255
blue = Color \ 65536

If weighted Then
  brightnes = 0.3 * red + 0.59 * green + 0.11 * blue
Else
  brightnes = (red + green + blue) / 3
End If

If brightnes > 127 Then
  contrastLong = vbBlack
Else
  contrastLong = vbWhite
End If
End Function


Gruß Sepp


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Text in Zeichnungselementen formatieren"