Das Archiv des Excel-Forums
MouseMove/ Steuelement allgemein ansprechen
Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Betrifft: MouseMove/ Steuelement allgemein ansprechen
von: Martin
Geschrieben am: 07.10.2003 16:49:31
Hallo,
habe in der Recherche den Weg gefunden, wie man mit 'MouseMove' den (sicherlich überflüssigen) aber netten Effekt erzielen kann, Buttons, Labels etc entsprechend anders farblich zu markieren. Das funktioniert auch soweit.
Eine Arbeitsmappe von mir enthält viele Tabellen. Zur Navigation habe ich ein Menü erstellt, dh Labels in einer Userform, die einen direkt ins entsprechende Blatt bringen. Dieses Menü hat zwei Spalten mit einmal 8 und einmal 10 Labels (die auch noch eine unterschiedliche BackColor haben).
Würde ich den MouseMove-Code für alle meine Labels eingeben, hätte ich sehr viel Code, der aufgrund der unterschiedlichen Farben in den Labels recht aufwendig wird. Hier ein Auszug, wie ich angefangen habe ..
Private Sub lCSGer_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
lCSGer.BackColor = &H80000002
lCSGer.ForeColor = &HFFFFFF
lCSFr.BackColor = &H8000000A
lCSFr.ForeColor = &H0&
End Sub
Private Sub lCSfr_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
lCSFr.BackColor = &H80000002
lCSFr.ForeColor = &HFFFFFF
lCSGer.BackColor = &H8000000A
lCSGer.ForeColor = &H0&
End Sub
usw.
Dies sind jetzt nur zwei gleichfarbige Labels, bei 18 sieht es schon anders aus.
Frage: Es gibt doch sicherlich eine Möglichkeit (Schleife?), die zu vereinfachen oder muss ich da durch und den Code so wie er angefangen wurde für alle Elemente durchziehen?
Gruss,
Martin
Betrifft: AW: MouseMove/ Steuelement allgemein ansprechen
von: Nepumuk
Geschrieben am: 07.10.2003 17:11:30
Hallo Martin,
soll immer nur ein Label gefärbt, und die Anderen ungefärbt sein?
Gruß
Nepumuk
Betrifft: ja (oT)
von: Martin
Geschrieben am: 07.10.2003 17:17:34
M.
Betrifft: AW: ja (oT)
von: Nepumuk
Geschrieben am: 07.10.2003 17:32:12
Hallo Martin,
hier ein Beispiel, bei dem es egal ist, wie viele Labels du hast.
https://www.herber.de/bbs/user/1312.xls
Gruß
Nepumuk
Betrifft: Super, Danke! (oT)
von: Martin
Geschrieben am: 07.10.2003 17:36:53
M.
Betrifft: AW: Super, Danke! (oT)
von: Michael Scheffler
Geschrieben am: 07.10.2003 17:41:44
Hallo Nepomuk,
For Each Myctrl In UserForm1.Controls
If TypeName(Myctrl) = "Label" Then
With Myctrl
.BackColor = &H8000000A
.ForeColor = &H0&
End With
End If
Next
in einer Klassendatei widerspricht ihrem Zweck, nämlich universell einsetzbar zu sein, eine DLL kannst Du damit nicht erzeugen.
Wenn schon diese Schleife, dann im MouseMove des Formulars. Aber ich würde hier keine Schleife machen, weil das zu Lasten der Performance geht.
Gruß
Micha
Betrifft: AW: Super, Danke! (oT)
von: Nepumuk
Geschrieben am: 07.10.2003 17:50:25
Hallo Micha,
ehrlich gesagt, ich weiß garnicht, wie ich aus einem Klassenmodul eine DLL erzeugen kann. Ich benutze dafür C++.
Gruß
Nepumuk
Betrifft: AW: Super, Danke! (oT)
von: Michael Scheffler
Geschrieben am: 08.10.2003 08:57:03
Hi,
es geht ganz gut (unter Zuhilfenahme von VB), wo man die clsDatei importieren kann.
Gruß
Micha
Betrifft: AW: MouseMove/ Steuelement allgemein ansprechen
von: Michael Scheffler
Geschrieben am: 07.10.2003 17:13:03
Hi,
in der Form:
Option Explicit
Option Base 1
Dim varLabel(2) As New clsLabel
Private Sub lCSGer_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
End Sub
Private Sub UserForm_Initialize()
Set varLabel(1).lblGroup = lCSGer
Set varLabel(2).lblGroup = lCSFr
End Sub
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
' Leider hier nicht ganz so elegant!
lCSGer.BackColor = &H8000000A: lCSGer.ForeColor = &H0&
lCSFr.BackColor = &H8000000A: lCSFr.ForeColor = &H0&
End Sub
Und in einem Klassenmodul clsLabel:
Option Explicit
Public WithEvents lblGroup As MSForms.Label
Private Sub lblGroup_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
lblGroup.BackColor = &H80000002
lblGroup.ForeColor = &HFFFFFF
End Sub
Gruß
Micha
Betrifft: AW: MouseMove/ Steuelement allgemein ansprechen
von: Martin
Geschrieben am: 07.10.2003 17:21:02
Danke Michael, das sieht schon besser aus, auch wenn es immer noch recht komplex aufgebaut ist. Wahrscheinlich ist es aber nicht einfacher hinzubekommen.
Gruss,
Martin
Excel-Beispiele zum Thema " MouseMove/ Steuelement allgemein ansprechen"