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

VBA UserForm Font Farbe ändern

Forumthread: VBA UserForm Font Farbe ändern

VBA UserForm Font Farbe ändern
12.09.2020 19:33:12
Hajo_Zi

Guten Abend da draußen,
ich habe da ein kleines UserForm mit Textfeldern. Wenn ich mit der Maus drauf zeige würde ich gerne die Hintergrundfarbe oder die Schriftfarbe ändern so das man sieht hey da tut sich was. Wie halt bei so einem Explorerfenster. Kann man das in VBA auch machen? Wenn ja wie geht das?
VG
SüßerApfel

Betrifft: AW: VBA UserForm Font Farbe ändern
Hi
Sowas könnte mit MouseMove realisiert werden.
Das Event spricht an, wenn man die Maus über dem Steuerelement bewegt.
Gruß Daniel
Betrifft: AW: VBA UserForm Font Farbe ändern
Hi
Sowas könnte mit MouseMove realisiert werden.
Das Event spricht an, wenn man die Maus über dem Steuerelement bewegt.
Gruß Daniel
Betrifft: AW: VBA UserForm Font Farbe ändern
Ah danke das Steuerelement habe ich gefunden also man kann da auch den Mauszeiger verändern bzw. einstellen das dieser sich verändert wenn der in den Bereich kommt. Und wie kann ich dann dem sagen das die Farbe sich ändern soll Daniel?
Betrifft: AW: VBA UserForm Font Farbe ändern
Hallo SüßerApfel,
eine Farbänderung machst du so:
https://www.herber.de/bbs/user/140206.xlsm
Von einer Cursoränderung würde ich abraten, die werden auf Userform-Controls schwarz und verschwommen angezeigt.
Gruß
Nepumuk
Betrifft: Frage falsch formuliert

Danke für eure Hilfe ich habe beides ausprobiert und es funktioniert, aber ich habe mir das ganze wohl falsch vorgestellt, daher habe ich eine Beispieldatei hochgeladen.
Ich möchte mir im Userform ein Menü mit 8 Menü-Punkten (in der Beispieldatei 3) basteln bei dem sich die Hintergrundfarbe, die Schriftfarbe und die Farbe des Symbol bzw Images beim drauf zeigen ändert. Wenn ich mit der Maus über ein Menü-Punkt fahre soll sich die Farbe verändern und sobald die Maus nicht mehr drauf zeigt soll der Ursprung wieder da sein. Wenn ich den Menü-Punkt anklick soll die farbliche Veränderung dauerhaft sein und zwar so lang bis ich einen anderen Menü Punkt anklicke.
Wie ich festgestellt habe kann ich ein MS Picogram nicht in ein Userform einbinden, deswegen musste ich zwei Images machen die je nach Situation ein-/ausgeblendet werden. Bis jetzt verändert sich alles dauerhaft wenn ich mit der Maus drüber fahre.
Im endeffekt will ich im Userform so ein Menü haben wie die Buttons auf dieser Forumseite.
https://www.herber.de/bbs/user/140207.xlsm
Könntet ihr mir dabei bitte helfen? Und noch eine Frage gibt es eigentlich eine elegantere Lösung als meine mit den Image + zwei Labels für einen Button? Ich weiß jetzt nicht wie ich es anders machen sollte.
Betrifft: AW: Frage falsch formuliert

HI
das mit dem Rücksetzen ist schwierig, weil es kein Event gibt, das reagiert wenn du ein Steuerelement verlässt.
eine Möglichkeit wäre die, dass du zwischen den einzelnen Menüpunkten eine Lücke lässt, so dass sich die Maus immer auch über die Userformgrundfläche bewegt.
Im MouseMove der Userform setzt du dann die Farben der zuletzt geänderten Steuererlemente wieder in den Ursprungszustand zurück.
die zuletzt geänderten Steuerelemente kannst du dir ja in einer Modulweit gültigen Variable merken, welche du beim MouseMove über ein Steuerelement befüllst.
also im Prinzip so (PseudoCode)
Public CrtAlt as Control
Privat Sub MouseMove_Steuerelement1
if Not crtAlt is Nothing then
crtAlt.BackColor = Standardfarbe
set crtAlt = Nothing
end if
if Steuerement1.BackColor = Standardfarbe then
Steuerelement1.BackColor = Hervorhebungsfarbe
set crtAlt = Steuerelement1
end if
End Sub
Privat Sub MouseMove_Steuerelement2
wie Steuerelement1 für Steuerelement2
End Sub
Private Sub MouseMove_Userform
if not crtAlt is Nothing then
crtAlt.Backcolor = Standardfarbe
set crtAlt = Nothing
end if
End sub
Gruß Daniel
Betrifft: AW: Frage falsch formuliert
Morgen Daniel,
das mit der Lücke zwischen den Menüpunkten war eine gute Idee das funktioniert jetzt supi =). Aber wie mach ich das mit dem Clickevent das der Menüpunkt dann dauerhaft seine Änderungen behält wenn ich ihn anklicke?
Gruß
Süßerapfel
Betrifft: AW: Frage falsch formuliert

Hi
wenn du den Button anklickst, sollte doch eigentlich sofort was passieren.
aber du kannst ja auch einfach im Klick-Event des Buttons die Variable crtAlt wieder auf Nothing setzen.
dann behält er seine Farbe.
Gruß Daniel
Betrifft: AW: VBA UserForm Font Farbe ändern

Option Explicit
Dim StTextbox As String
Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)
If StTextbox <> "" Then
Controls(StTextbox).BackColor = &H80000005
End If
TextBox1.BackColor = 255
StTextbox = "Textbox1"
End Sub
Private Sub TextBox2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)
If StTextbox <> "" Then
Controls(StTextbox).BackColor = &H80000005
End If
TextBox2.BackColor = 255
StTextbox = "Textbox2"
End Sub


Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA UserForm Font Farbe ändern
12.09.2020 19:33:12
Hajo_Zi
Hi
Sowas könnte mit MouseMove realisiert werden.
Das Event spricht an, wenn man die Maus über dem Steuerelement bewegt.
Gruß Daniel
Betrifft: AW: VBA UserForm Font Farbe ändern
Hi
Sowas könnte mit MouseMove realisiert werden.
Das Event spricht an, wenn man die Maus über dem Steuerelement bewegt.
Gruß Daniel
Betrifft: AW: VBA UserForm Font Farbe ändern
Ah danke das Steuerelement habe ich gefunden also man kann da auch den Mauszeiger verändern bzw. einstellen das dieser sich verändert wenn der in den Bereich kommt. Und wie kann ich dann dem sagen das die Farbe sich ändern soll Daniel?
Betrifft: AW: VBA UserForm Font Farbe ändern
Hallo SüßerApfel,
eine Farbänderung machst du so:
https://www.herber.de/bbs/user/140206.xlsm
Von einer Cursoränderung würde ich abraten, die werden auf Userform-Controls schwarz und verschwommen angezeigt.
Gruß
Nepumuk
Betrifft: Frage falsch formuliert

Danke für eure Hilfe ich habe beides ausprobiert und es funktioniert, aber ich habe mir das ganze wohl falsch vorgestellt, daher habe ich eine Beispieldatei hochgeladen.
Ich möchte mir im Userform ein Menü mit 8 Menü-Punkten (in der Beispieldatei 3) basteln bei dem sich die Hintergrundfarbe, die Schriftfarbe und die Farbe des Symbol bzw Images beim drauf zeigen ändert. Wenn ich mit der Maus über ein Menü-Punkt fahre soll sich die Farbe verändern und sobald die Maus nicht mehr drauf zeigt soll der Ursprung wieder da sein. Wenn ich den Menü-Punkt anklick soll die farbliche Veränderung dauerhaft sein und zwar so lang bis ich einen anderen Menü Punkt anklicke.
Wie ich festgestellt habe kann ich ein MS Picogram nicht in ein Userform einbinden, deswegen musste ich zwei Images machen die je nach Situation ein-/ausgeblendet werden. Bis jetzt verändert sich alles dauerhaft wenn ich mit der Maus drüber fahre.
Im endeffekt will ich im Userform so ein Menü haben wie die Buttons auf dieser Forumseite.
https://www.herber.de/bbs/user/140207.xlsm
Könntet ihr mir dabei bitte helfen? Und noch eine Frage gibt es eigentlich eine elegantere Lösung als meine mit den Image + zwei Labels für einen Button? Ich weiß jetzt nicht wie ich es anders machen sollte.
Betrifft: AW: Frage falsch formuliert

HI
das mit dem Rücksetzen ist schwierig, weil es kein Event gibt, das reagiert wenn du ein Steuerelement verlässt.
eine Möglichkeit wäre die, dass du zwischen den einzelnen Menüpunkten eine Lücke lässt, so dass sich die Maus immer auch über die Userformgrundfläche bewegt.
Im MouseMove der Userform setzt du dann die Farben der zuletzt geänderten Steuererlemente wieder in den Ursprungszustand zurück.
die zuletzt geänderten Steuerelemente kannst du dir ja in einer Modulweit gültigen Variable merken, welche du beim MouseMove über ein Steuerelement befüllst.
also im Prinzip so (PseudoCode)
Public CrtAlt as Control
Privat Sub MouseMove_Steuerelement1
if Not crtAlt is Nothing then
crtAlt.BackColor = Standardfarbe
set crtAlt = Nothing
end if
if Steuerement1.BackColor = Standardfarbe then
Steuerelement1.BackColor = Hervorhebungsfarbe
set crtAlt = Steuerelement1
end if
End Sub
Privat Sub MouseMove_Steuerelement2
wie Steuerelement1 für Steuerelement2
End Sub
Private Sub MouseMove_Userform
if not crtAlt is Nothing then
crtAlt.Backcolor = Standardfarbe
set crtAlt = Nothing
end if
End sub
Gruß Daniel
Betrifft: AW: Frage falsch formuliert
Morgen Daniel,
das mit der Lücke zwischen den Menüpunkten war eine gute Idee das funktioniert jetzt supi =). Aber wie mach ich das mit dem Clickevent das der Menüpunkt dann dauerhaft seine Änderungen behält wenn ich ihn anklicke?
Gruß
Süßerapfel
Betrifft: AW: Frage falsch formuliert

Hi
wenn du den Button anklickst, sollte doch eigentlich sofort was passieren.
aber du kannst ja auch einfach im Klick-Event des Buttons die Variable crtAlt wieder auf Nothing setzen.
dann behält er seine Farbe.
Gruß Daniel
Betrifft: AW: VBA UserForm Font Farbe ändern

Option Explicit
Dim StTextbox As String
Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)
If StTextbox <> "" Then
Controls(StTextbox).BackColor = &H80000005
End If
TextBox1.BackColor = 255
StTextbox = "Textbox1"
End Sub
Private Sub TextBox2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)
If StTextbox <> "" Then
Controls(StTextbox).BackColor = &H80000005
End If
TextBox2.BackColor = 255
StTextbox = "Textbox2"
End Sub


Anzeige
AW: VBA UserForm Font Farbe ändern
12.09.2020 19:33:12
Hajo_Zi
Hi
Sowas könnte mit MouseMove realisiert werden.
Das Event spricht an, wenn man die Maus über dem Steuerelement bewegt.
Gruß Daniel
Betrifft: AW: VBA UserForm Font Farbe ändern
Ah danke das Steuerelement habe ich gefunden also man kann da auch den Mauszeiger verändern bzw. einstellen das dieser sich verändert wenn der in den Bereich kommt. Und wie kann ich dann dem sagen das die Farbe sich ändern soll Daniel?
Betrifft: AW: VBA UserForm Font Farbe ändern
Hallo SüßerApfel,
eine Farbänderung machst du so:
https://www.herber.de/bbs/user/140206.xlsm
Von einer Cursoränderung würde ich abraten, die werden auf Userform-Controls schwarz und verschwommen angezeigt.
Gruß
Nepumuk
Betrifft: Frage falsch formuliert

Danke für eure Hilfe ich habe beides ausprobiert und es funktioniert, aber ich habe mir das ganze wohl falsch vorgestellt, daher habe ich eine Beispieldatei hochgeladen.
Ich möchte mir im Userform ein Menü mit 8 Menü-Punkten (in der Beispieldatei 3) basteln bei dem sich die Hintergrundfarbe, die Schriftfarbe und die Farbe des Symbol bzw Images beim drauf zeigen ändert. Wenn ich mit der Maus über ein Menü-Punkt fahre soll sich die Farbe verändern und sobald die Maus nicht mehr drauf zeigt soll der Ursprung wieder da sein. Wenn ich den Menü-Punkt anklick soll die farbliche Veränderung dauerhaft sein und zwar so lang bis ich einen anderen Menü Punkt anklicke.
Wie ich festgestellt habe kann ich ein MS Picogram nicht in ein Userform einbinden, deswegen musste ich zwei Images machen die je nach Situation ein-/ausgeblendet werden. Bis jetzt verändert sich alles dauerhaft wenn ich mit der Maus drüber fahre.
Im endeffekt will ich im Userform so ein Menü haben wie die Buttons auf dieser Forumseite.
https://www.herber.de/bbs/user/140207.xlsm
Könntet ihr mir dabei bitte helfen? Und noch eine Frage gibt es eigentlich eine elegantere Lösung als meine mit den Image + zwei Labels für einen Button? Ich weiß jetzt nicht wie ich es anders machen sollte.
Betrifft: AW: Frage falsch formuliert

HI
das mit dem Rücksetzen ist schwierig, weil es kein Event gibt, das reagiert wenn du ein Steuerelement verlässt.
eine Möglichkeit wäre die, dass du zwischen den einzelnen Menüpunkten eine Lücke lässt, so dass sich die Maus immer auch über die Userformgrundfläche bewegt.
Im MouseMove der Userform setzt du dann die Farben der zuletzt geänderten Steuererlemente wieder in den Ursprungszustand zurück.
die zuletzt geänderten Steuerelemente kannst du dir ja in einer Modulweit gültigen Variable merken, welche du beim MouseMove über ein Steuerelement befüllst.
also im Prinzip so (PseudoCode)
Public CrtAlt as Control
Privat Sub MouseMove_Steuerelement1
if Not crtAlt is Nothing then
crtAlt.BackColor = Standardfarbe
set crtAlt = Nothing
end if
if Steuerement1.BackColor = Standardfarbe then
Steuerelement1.BackColor = Hervorhebungsfarbe
set crtAlt = Steuerelement1
end if
End Sub
Privat Sub MouseMove_Steuerelement2
wie Steuerelement1 für Steuerelement2
End Sub
Private Sub MouseMove_Userform
if not crtAlt is Nothing then
crtAlt.Backcolor = Standardfarbe
set crtAlt = Nothing
end if
End sub
Gruß Daniel
Betrifft: AW: Frage falsch formuliert
Morgen Daniel,
das mit der Lücke zwischen den Menüpunkten war eine gute Idee das funktioniert jetzt supi =). Aber wie mach ich das mit dem Clickevent das der Menüpunkt dann dauerhaft seine Änderungen behält wenn ich ihn anklicke?
Gruß
Süßerapfel
Betrifft: AW: Frage falsch formuliert

Hi
wenn du den Button anklickst, sollte doch eigentlich sofort was passieren.
aber du kannst ja auch einfach im Klick-Event des Buttons die Variable crtAlt wieder auf Nothing setzen.
dann behält er seine Farbe.
Gruß Daniel
Betrifft: AW: VBA UserForm Font Farbe ändern

Option Explicit
Dim StTextbox As String
Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)
If StTextbox <> "" Then
Controls(StTextbox).BackColor = &H80000005
End If
TextBox1.BackColor = 255
StTextbox = "Textbox1"
End Sub
Private Sub TextBox2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)
If StTextbox <> "" Then
Controls(StTextbox).BackColor = &H80000005
End If
TextBox2.BackColor = 255
StTextbox = "Textbox2"
End Sub


Anzeige
AW: VBA UserForm Font Farbe ändern
12.09.2020 19:33:12
Hajo_Zi
Ah danke das Steuerelement habe ich gefunden also man kann da auch den Mauszeiger verändern bzw. einstellen das dieser sich verändert wenn der in den Bereich kommt. Und wie kann ich dann dem sagen das die Farbe sich ändern soll Daniel?
Betrifft: AW: VBA UserForm Font Farbe ändern
Hallo SüßerApfel,
eine Farbänderung machst du so:
https://www.herber.de/bbs/user/140206.xlsm
Von einer Cursoränderung würde ich abraten, die werden auf Userform-Controls schwarz und verschwommen angezeigt.
Gruß
Nepumuk
Betrifft: Frage falsch formuliert

Danke für eure Hilfe ich habe beides ausprobiert und es funktioniert, aber ich habe mir das ganze wohl falsch vorgestellt, daher habe ich eine Beispieldatei hochgeladen.
Ich möchte mir im Userform ein Menü mit 8 Menü-Punkten (in der Beispieldatei 3) basteln bei dem sich die Hintergrundfarbe, die Schriftfarbe und die Farbe des Symbol bzw Images beim drauf zeigen ändert. Wenn ich mit der Maus über ein Menü-Punkt fahre soll sich die Farbe verändern und sobald die Maus nicht mehr drauf zeigt soll der Ursprung wieder da sein. Wenn ich den Menü-Punkt anklick soll die farbliche Veränderung dauerhaft sein und zwar so lang bis ich einen anderen Menü Punkt anklicke.
Wie ich festgestellt habe kann ich ein MS Picogram nicht in ein Userform einbinden, deswegen musste ich zwei Images machen die je nach Situation ein-/ausgeblendet werden. Bis jetzt verändert sich alles dauerhaft wenn ich mit der Maus drüber fahre.
Im endeffekt will ich im Userform so ein Menü haben wie die Buttons auf dieser Forumseite.
https://www.herber.de/bbs/user/140207.xlsm
Könntet ihr mir dabei bitte helfen? Und noch eine Frage gibt es eigentlich eine elegantere Lösung als meine mit den Image + zwei Labels für einen Button? Ich weiß jetzt nicht wie ich es anders machen sollte.
Betrifft: AW: Frage falsch formuliert

HI
das mit dem Rücksetzen ist schwierig, weil es kein Event gibt, das reagiert wenn du ein Steuerelement verlässt.
eine Möglichkeit wäre die, dass du zwischen den einzelnen Menüpunkten eine Lücke lässt, so dass sich die Maus immer auch über die Userformgrundfläche bewegt.
Im MouseMove der Userform setzt du dann die Farben der zuletzt geänderten Steuererlemente wieder in den Ursprungszustand zurück.
die zuletzt geänderten Steuerelemente kannst du dir ja in einer Modulweit gültigen Variable merken, welche du beim MouseMove über ein Steuerelement befüllst.
also im Prinzip so (PseudoCode)
Public CrtAlt as Control
Privat Sub MouseMove_Steuerelement1
if Not crtAlt is Nothing then
crtAlt.BackColor = Standardfarbe
set crtAlt = Nothing
end if
if Steuerement1.BackColor = Standardfarbe then
Steuerelement1.BackColor = Hervorhebungsfarbe
set crtAlt = Steuerelement1
end if
End Sub
Privat Sub MouseMove_Steuerelement2
wie Steuerelement1 für Steuerelement2
End Sub
Private Sub MouseMove_Userform
if not crtAlt is Nothing then
crtAlt.Backcolor = Standardfarbe
set crtAlt = Nothing
end if
End sub
Gruß Daniel
Betrifft: AW: Frage falsch formuliert
Morgen Daniel,
das mit der Lücke zwischen den Menüpunkten war eine gute Idee das funktioniert jetzt supi =). Aber wie mach ich das mit dem Clickevent das der Menüpunkt dann dauerhaft seine Änderungen behält wenn ich ihn anklicke?
Gruß
Süßerapfel
Betrifft: AW: Frage falsch formuliert

Hi
wenn du den Button anklickst, sollte doch eigentlich sofort was passieren.
aber du kannst ja auch einfach im Klick-Event des Buttons die Variable crtAlt wieder auf Nothing setzen.
dann behält er seine Farbe.
Gruß Daniel
Betrifft: AW: VBA UserForm Font Farbe ändern

Option Explicit
Dim StTextbox As String
Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)
If StTextbox <> "" Then
Controls(StTextbox).BackColor = &H80000005
End If
TextBox1.BackColor = 255
StTextbox = "Textbox1"
End Sub
Private Sub TextBox2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)
If StTextbox <> "" Then
Controls(StTextbox).BackColor = &H80000005
End If
TextBox2.BackColor = 255
StTextbox = "Textbox2"
End Sub


Anzeige
AW: VBA UserForm Font Farbe ändern
12.09.2020 19:33:12
Hajo_Zi
Hallo SüßerApfel,
eine Farbänderung machst du so:
https://www.herber.de/bbs/user/140206.xlsm
Von einer Cursoränderung würde ich abraten, die werden auf Userform-Controls schwarz und verschwommen angezeigt.
Gruß
Nepumuk
Betrifft: Frage falsch formuliert

Danke für eure Hilfe ich habe beides ausprobiert und es funktioniert, aber ich habe mir das ganze wohl falsch vorgestellt, daher habe ich eine Beispieldatei hochgeladen.
Ich möchte mir im Userform ein Menü mit 8 Menü-Punkten (in der Beispieldatei 3) basteln bei dem sich die Hintergrundfarbe, die Schriftfarbe und die Farbe des Symbol bzw Images beim drauf zeigen ändert. Wenn ich mit der Maus über ein Menü-Punkt fahre soll sich die Farbe verändern und sobald die Maus nicht mehr drauf zeigt soll der Ursprung wieder da sein. Wenn ich den Menü-Punkt anklick soll die farbliche Veränderung dauerhaft sein und zwar so lang bis ich einen anderen Menü Punkt anklicke.
Wie ich festgestellt habe kann ich ein MS Picogram nicht in ein Userform einbinden, deswegen musste ich zwei Images machen die je nach Situation ein-/ausgeblendet werden. Bis jetzt verändert sich alles dauerhaft wenn ich mit der Maus drüber fahre.
Im endeffekt will ich im Userform so ein Menü haben wie die Buttons auf dieser Forumseite.
https://www.herber.de/bbs/user/140207.xlsm
Könntet ihr mir dabei bitte helfen? Und noch eine Frage gibt es eigentlich eine elegantere Lösung als meine mit den Image + zwei Labels für einen Button? Ich weiß jetzt nicht wie ich es anders machen sollte.
Betrifft: AW: Frage falsch formuliert

HI
das mit dem Rücksetzen ist schwierig, weil es kein Event gibt, das reagiert wenn du ein Steuerelement verlässt.
eine Möglichkeit wäre die, dass du zwischen den einzelnen Menüpunkten eine Lücke lässt, so dass sich die Maus immer auch über die Userformgrundfläche bewegt.
Im MouseMove der Userform setzt du dann die Farben der zuletzt geänderten Steuererlemente wieder in den Ursprungszustand zurück.
die zuletzt geänderten Steuerelemente kannst du dir ja in einer Modulweit gültigen Variable merken, welche du beim MouseMove über ein Steuerelement befüllst.
also im Prinzip so (PseudoCode)
Public CrtAlt as Control
Privat Sub MouseMove_Steuerelement1
if Not crtAlt is Nothing then
crtAlt.BackColor = Standardfarbe
set crtAlt = Nothing
end if
if Steuerement1.BackColor = Standardfarbe then
Steuerelement1.BackColor = Hervorhebungsfarbe
set crtAlt = Steuerelement1
end if
End Sub
Privat Sub MouseMove_Steuerelement2
wie Steuerelement1 für Steuerelement2
End Sub
Private Sub MouseMove_Userform
if not crtAlt is Nothing then
crtAlt.Backcolor = Standardfarbe
set crtAlt = Nothing
end if
End sub
Gruß Daniel
Betrifft: AW: Frage falsch formuliert
Morgen Daniel,
das mit der Lücke zwischen den Menüpunkten war eine gute Idee das funktioniert jetzt supi =). Aber wie mach ich das mit dem Clickevent das der Menüpunkt dann dauerhaft seine Änderungen behält wenn ich ihn anklicke?
Gruß
Süßerapfel
Betrifft: AW: Frage falsch formuliert

Hi
wenn du den Button anklickst, sollte doch eigentlich sofort was passieren.
aber du kannst ja auch einfach im Klick-Event des Buttons die Variable crtAlt wieder auf Nothing setzen.
dann behält er seine Farbe.
Gruß Daniel
Betrifft: AW: VBA UserForm Font Farbe ändern

Option Explicit
Dim StTextbox As String
Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)
If StTextbox <> "" Then
Controls(StTextbox).BackColor = &H80000005
End If
TextBox1.BackColor = 255
StTextbox = "Textbox1"
End Sub
Private Sub TextBox2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)
If StTextbox <> "" Then
Controls(StTextbox).BackColor = &H80000005
End If
TextBox2.BackColor = 255
StTextbox = "Textbox2"
End Sub


Anzeige
Frage falsch formuliert
12.09.2020 19:33:12
Hajo_Zi
Danke für eure Hilfe ich habe beides ausprobiert und es funktioniert, aber ich habe mir das ganze wohl falsch vorgestellt, daher habe ich eine Beispieldatei hochgeladen.
Ich möchte mir im Userform ein Menü mit 8 Menü-Punkten (in der Beispieldatei 3) basteln bei dem sich die Hintergrundfarbe, die Schriftfarbe und die Farbe des Symbol bzw Images beim drauf zeigen ändert. Wenn ich mit der Maus über ein Menü-Punkt fahre soll sich die Farbe verändern und sobald die Maus nicht mehr drauf zeigt soll der Ursprung wieder da sein. Wenn ich den Menü-Punkt anklick soll die farbliche Veränderung dauerhaft sein und zwar so lang bis ich einen anderen Menü Punkt anklicke.
Wie ich festgestellt habe kann ich ein MS Picogram nicht in ein Userform einbinden, deswegen musste ich zwei Images machen die je nach Situation ein-/ausgeblendet werden. Bis jetzt verändert sich alles dauerhaft wenn ich mit der Maus drüber fahre.
Im endeffekt will ich im Userform so ein Menü haben wie die Buttons auf dieser Forumseite.
https://www.herber.de/bbs/user/140207.xlsm
Könntet ihr mir dabei bitte helfen? Und noch eine Frage gibt es eigentlich eine elegantere Lösung als meine mit den Image + zwei Labels für einen Button? Ich weiß jetzt nicht wie ich es anders machen sollte.
Betrifft: AW: Frage falsch formuliert

HI
das mit dem Rücksetzen ist schwierig, weil es kein Event gibt, das reagiert wenn du ein Steuerelement verlässt.
eine Möglichkeit wäre die, dass du zwischen den einzelnen Menüpunkten eine Lücke lässt, so dass sich die Maus immer auch über die Userformgrundfläche bewegt.
Im MouseMove der Userform setzt du dann die Farben der zuletzt geänderten Steuererlemente wieder in den Ursprungszustand zurück.
die zuletzt geänderten Steuerelemente kannst du dir ja in einer Modulweit gültigen Variable merken, welche du beim MouseMove über ein Steuerelement befüllst.
also im Prinzip so (PseudoCode)
Public CrtAlt as Control
Privat Sub MouseMove_Steuerelement1
if Not crtAlt is Nothing then
crtAlt.BackColor = Standardfarbe
set crtAlt = Nothing
end if
if Steuerement1.BackColor = Standardfarbe then
Steuerelement1.BackColor = Hervorhebungsfarbe
set crtAlt = Steuerelement1
end if
End Sub
Privat Sub MouseMove_Steuerelement2
wie Steuerelement1 für Steuerelement2
End Sub
Private Sub MouseMove_Userform
if not crtAlt is Nothing then
crtAlt.Backcolor = Standardfarbe
set crtAlt = Nothing
end if
End sub
Gruß Daniel
Betrifft: AW: Frage falsch formuliert
Morgen Daniel,
das mit der Lücke zwischen den Menüpunkten war eine gute Idee das funktioniert jetzt supi =). Aber wie mach ich das mit dem Clickevent das der Menüpunkt dann dauerhaft seine Änderungen behält wenn ich ihn anklicke?
Gruß
Süßerapfel
Betrifft: AW: Frage falsch formuliert

Hi
wenn du den Button anklickst, sollte doch eigentlich sofort was passieren.
aber du kannst ja auch einfach im Klick-Event des Buttons die Variable crtAlt wieder auf Nothing setzen.
dann behält er seine Farbe.
Gruß Daniel
Betrifft: AW: VBA UserForm Font Farbe ändern

Option Explicit
Dim StTextbox As String
Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)
If StTextbox <> "" Then
Controls(StTextbox).BackColor = &H80000005
End If
TextBox1.BackColor = 255
StTextbox = "Textbox1"
End Sub
Private Sub TextBox2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)
If StTextbox <> "" Then
Controls(StTextbox).BackColor = &H80000005
End If
TextBox2.BackColor = 255
StTextbox = "Textbox2"
End Sub


Anzeige
AW: Frage falsch formuliert
12.09.2020 19:33:12
Hajo_Zi
HI
das mit dem Rücksetzen ist schwierig, weil es kein Event gibt, das reagiert wenn du ein Steuerelement verlässt.
eine Möglichkeit wäre die, dass du zwischen den einzelnen Menüpunkten eine Lücke lässt, so dass sich die Maus immer auch über die Userformgrundfläche bewegt.
Im MouseMove der Userform setzt du dann die Farben der zuletzt geänderten Steuererlemente wieder in den Ursprungszustand zurück.
die zuletzt geänderten Steuerelemente kannst du dir ja in einer Modulweit gültigen Variable merken, welche du beim MouseMove über ein Steuerelement befüllst.
also im Prinzip so (PseudoCode)
Public CrtAlt as Control
Privat Sub MouseMove_Steuerelement1
if Not crtAlt is Nothing then
crtAlt.BackColor = Standardfarbe
set crtAlt = Nothing
end if
if Steuerement1.BackColor = Standardfarbe then
Steuerelement1.BackColor = Hervorhebungsfarbe
set crtAlt = Steuerelement1
end if
End Sub
Privat Sub MouseMove_Steuerelement2
wie Steuerelement1 für Steuerelement2
End Sub
Private Sub MouseMove_Userform
if not crtAlt is Nothing then
crtAlt.Backcolor = Standardfarbe
set crtAlt = Nothing
end if
End sub
Gruß Daniel
Betrifft: AW: Frage falsch formuliert
Morgen Daniel,
das mit der Lücke zwischen den Menüpunkten war eine gute Idee das funktioniert jetzt supi =). Aber wie mach ich das mit dem Clickevent das der Menüpunkt dann dauerhaft seine Änderungen behält wenn ich ihn anklicke?
Gruß
Süßerapfel
Betrifft: AW: Frage falsch formuliert

Hi
wenn du den Button anklickst, sollte doch eigentlich sofort was passieren.
aber du kannst ja auch einfach im Klick-Event des Buttons die Variable crtAlt wieder auf Nothing setzen.
dann behält er seine Farbe.
Gruß Daniel
Betrifft: AW: VBA UserForm Font Farbe ändern

Option Explicit
Dim StTextbox As String
Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)
If StTextbox <> "" Then
Controls(StTextbox).BackColor = &H80000005
End If
TextBox1.BackColor = 255
StTextbox = "Textbox1"
End Sub
Private Sub TextBox2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)
If StTextbox <> "" Then
Controls(StTextbox).BackColor = &H80000005
End If
TextBox2.BackColor = 255
StTextbox = "Textbox2"
End Sub


Anzeige
AW: Frage falsch formuliert
12.09.2020 19:33:12
Hajo_Zi
Morgen Daniel,
das mit der Lücke zwischen den Menüpunkten war eine gute Idee das funktioniert jetzt supi =). Aber wie mach ich das mit dem Clickevent das der Menüpunkt dann dauerhaft seine Änderungen behält wenn ich ihn anklicke?
Gruß
Süßerapfel
Betrifft: AW: Frage falsch formuliert

Hi
wenn du den Button anklickst, sollte doch eigentlich sofort was passieren.
aber du kannst ja auch einfach im Klick-Event des Buttons die Variable crtAlt wieder auf Nothing setzen.
dann behält er seine Farbe.
Gruß Daniel
Betrifft: AW: VBA UserForm Font Farbe ändern

Option Explicit
Dim StTextbox As String
Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)
If StTextbox <> "" Then
Controls(StTextbox).BackColor = &H80000005
End If
TextBox1.BackColor = 255
StTextbox = "Textbox1"
End Sub
Private Sub TextBox2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)
If StTextbox <> "" Then
Controls(StTextbox).BackColor = &H80000005
End If
TextBox2.BackColor = 255
StTextbox = "Textbox2"
End Sub


Anzeige
AW: Frage falsch formuliert
12.09.2020 19:33:12
Hajo_Zi
Hi
wenn du den Button anklickst, sollte doch eigentlich sofort was passieren.
aber du kannst ja auch einfach im Klick-Event des Buttons die Variable crtAlt wieder auf Nothing setzen.
dann behält er seine Farbe.
Gruß Daniel
Betrifft: AW: VBA UserForm Font Farbe ändern

Option Explicit
Dim StTextbox As String
Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)
If StTextbox <> "" Then
Controls(StTextbox).BackColor = &H80000005
End If
TextBox1.BackColor = 255
StTextbox = "Textbox1"
End Sub
Private Sub TextBox2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)
If StTextbox <> "" Then
Controls(StTextbox).BackColor = &H80000005
End If
TextBox2.BackColor = 255
StTextbox = "Textbox2"
End Sub


Anzeige
AW: VBA UserForm Font Farbe ändern
12.09.2020 19:33:12
Hajo_Zi

Option Explicit
Dim StTextbox As String
Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)
If StTextbox <> "" Then
Controls(StTextbox).BackColor = &H80000005
End If
TextBox1.BackColor = 255
StTextbox = "Textbox1"
End Sub
Private Sub TextBox2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)
If StTextbox <> "" Then
Controls(StTextbox).BackColor = &H80000005
End If
TextBox2.BackColor = 255
StTextbox = "Textbox2"
End Sub


Anzeige
;
Anzeige

Infobox / Tutorial

VBA UserForm Schriftfarbe und Hintergrundfarbe ändern


Schritt-für-Schritt-Anleitung

Um die Schriftfarbe und die Hintergrundfarbe in einem VBA UserForm zu ändern, kannst du die MouseMove- und Click-Events verwenden. Hier ist eine einfache Anleitung:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.
  2. Erstelle ein neues UserForm:

    • Füge ein neues UserForm hinzu, indem du mit der rechten Maustaste im Projektfenster auf dein Projekt klickst, dann "Einfügen" und "UserForm" wählst.
  3. Füge Steuerelemente hinzu:

    • Ziehe TextBoxen oder Labels auf das UserForm, die du anpassen möchtest.
  4. Füge den folgenden Code hinzu:

    Option Explicit
    Dim StTextbox As String
    
    Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
       If StTextbox <> "" Then
           Controls(StTextbox).BackColor = &H80000005 ' Ursprüngliche Farbe wiederherstellen
       End If
       TextBox1.BackColor = RGB(255, 255, 0) ' Hervorhebungsfarbe
       StTextbox = "TextBox1"
    End Sub
    
    Private Sub TextBox2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
       If StTextbox <> "" Then
           Controls(StTextbox).BackColor = &H80000005 ' Ursprüngliche Farbe wiederherstellen
       End If
       TextBox2.BackColor = RGB(255, 255, 0) ' Hervorhebungsfarbe
       StTextbox = "TextBox2"
    End Sub
    
    Private Sub TextBox1_Click()
       ' Aktion beim Klicken
       TextBox1.BackColor = RGB(0, 255, 0) ' Dauerhaft grün
    End Sub
    
    Private Sub TextBox2_Click()
       ' Aktion beim Klicken
       TextBox2.BackColor = RGB(0, 255, 0) ' Dauerhaft grün
    End Sub
  5. Testen:

    • Starte das UserForm und bewege die Maus über die TextBoxen, um die Farben zu sehen!

Häufige Fehler und Lösungen

  • Fehler: Die Farben ändern sich nicht wie erwartet.

    • Lösung: Überprüfe, ob du die richtigen Steuerelementnamen verwendest und dass der Code im richtigen Bereich des UserForms eingefügt ist.
  • Fehler: Der Cursor ändert sich nicht.

    • Lösung: Das Ändern des Cursors ist in VBA nicht direkt möglich. Du kannst jedoch die Hintergrundfarbe des Steuerelements ändern, um die Benutzeroberfläche ansprechender zu gestalten.

Alternative Methoden

Eine alternative Methode ist die Verwendung von Excel VBA Image Click Event, um die Hintergrundfarbe eines Bildes zu ändern. Dies kann besonders nützlich sein, wenn du Bilder in deinem UserForm verwenden möchtest.

Private Sub Image1_Click()
    Image1.BackColor = RGB(255, 0, 0) ' Ändert die Hintergrundfarbe des Bildes
End Sub

Praktische Beispiele

Hier sind einige Anwendungsbeispiele für die Anwendung der oben genannten Techniken:

  1. Hauptmenü:

    • Erstelle ein Hauptmenü im UserForm, wo die Schriftfarbe und Hintergrundfarbe der Menü-Punkte bei MouseOver und Click-Ereignissen geändert werden.
  2. Eingabeformulare:

    • Verwende farbliche Hervorhebungen für TextBoxen, um den Benutzer auf erforderliche Eingaben aufmerksam zu machen.

Tipps für Profis

  • Du kannst excel standardfarben dauerhaft ändern, indem du benutzerdefinierte RGB-Farben verwendest, um eine konsistente Benutzererfahrung zu gewährleisten.
  • Verwende vba schriftfarbe ändern, um die Schriftfarbe dynamisch anzupassen, basierend auf der Benutzerinteraktion.

FAQ: Häufige Fragen

1. Wie kann ich die Standardfarben in Excel dauerhaft ändern? Um die Standardfarben in Excel zu ändern, gehe zu "Datei" > "Optionen" > "Erweitert" und suche nach den Farboptionen.

2. Kann ich den Cursor in einem UserForm ändern? Es ist schwierig, den Cursor in einem UserForm zu ändern, da die Cursorfarbe oft nicht richtig dargestellt wird. Es wird empfohlen, stattdessen die Farben der Steuerelemente zu ändern.

3. Wie kann ich die Schriftfarbe eines Textfeldes ändern? Du kannst die Schriftfarbe eines Textfeldes mit dem Font-Objekt ändern:

TextBox1.Font.Color = RGB(255, 0, 0) ' Ändert die Schriftfarbe auf Rot

Jetzt bist du bereit, die Schriftfarbe und Hintergrundfarbe in deinem VBA UserForm zu ändern! Viel Erfolg!

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