Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
332to336
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
332to336
332to336
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Labels mit einer Schleife 'kontrollieren'

Labels mit einer Schleife 'kontrollieren'
08.11.2003 22:12:10
Martin
Hallo,

ich habe eine Userform, die Labels hat. Bis auf zwei Labels (als Überschrift-Feld benutzt), haben alle die Funktion, bei Klick darauf eine Prozedur aufzurufen.

Alle Labels sind in der gleichen Hintergrundfarbe gehalten und die Bezeichnung selbst ebenfalls. Als besonderes Gimmick habe ich diese Userform so gestaltet, dass bei MouseMove die Hintergrund- und die Schriftfarbe wechselt, um halt einen Effekt ähnlich dem onMouseOver und onMouseOut-Befehl in Javascript zu erhalten.

Da ich diese Arbeit nicht mit einer Schleife beherrsche, habe ich die eher umständlich gelöst, in dem ich bei jedem Label alle Label einzeln mit '

Private Sub label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single)' formatiere.
Hier der Codes eines der Labels als Beispiel

Private Sub lMenuLeft_FR_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single)
With lMenuLeft_FR
.BackColor = RGB(0, 0, 97)
.ForeColor = RGB(255, 255, 255)
.Font.Bold = True
End With
'lMenuLeft_FR.BackColor =  RGB(212, 208, 200)
'lMenuLeft_FR.ForeColor =  RGB(0,0,0)
'lMenuLeft_FR.Font.Bold = False
lMenuLeft_GER.BackColor = RGB(212, 208, 200)
lMenuLeft_GER.ForeColor = RGB(0, 0, 0)
lMenuLeft_GER.Font.Bold = False
lMenuLeft_IT.BackColor = RGB(212, 208, 200)
lMenuLeft_IT.ForeColor = RGB(0, 0, 0)
lMenuLeft_IT.Font.Bold = False
lMenuLeft_NOR.BackColor = RGB(212, 208, 200)
lMenuLeft_NOR.ForeColor = RGB(0, 0, 0)
lMenuLeft_NOR.Font.Bold = False
lMenuLeft_ESP_A.BackColor = RGB(212, 208, 200)
lMenuLeft_ESP_A.ForeColor = RGB(0, 0, 0)
lMenuLeft_ESP_A.Font.Bold = False
lMenuLeft_ESP_E.BackColor = RGB(212, 208, 200)
lMenuLeft_ESP_E.ForeColor = RGB(0, 0, 0)
lMenuLeft_ESP_E.Font.Bold = False
lMenuLeft_SWE.BackColor = RGB(212, 208, 200)
lMenuLeft_SWE.ForeColor = RGB(0, 0, 0)
lMenuLeft_SWE.Font.Bold = False
lMenuLeft_CH.BackColor = RGB(212, 208, 200)
lMenuLeft_CH.ForeColor = RGB(0, 0, 0)
lMenuLeft_CH.Font.Bold = False
lMenuLeft_FFII.BackColor = RGB(212, 208, 200)
lMenuLeft_FFII.ForeColor = RGB(0, 0, 0)
lMenuLeft_FFII.Font.Bold = False
lMenuLeft_ALL.BackColor = RGB(212, 208, 200)
lMenuLeft_ALL.ForeColor = RGB(0, 0, 0)
lMenuLeft_ALL.Font.Bold = False
End Sub


Das mal 18 multipliziert, gibt viel Holz.
Nun die Frage. Wie kann ich diese Aufgabe am elegantesten in einer Schleife lösen, 2 der Labels dürfen dabei nicht miteinbezogen werden.

Danke für alle Tips
Gruss,
Martin

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Labels mit einer Schleife 'kontrollieren'
08.11.2003 22:40:44
Josef Ehrensberger
Hallo Martin,

am einfachsten ist es immer wenn man die
Elemente einer UserForm durchnummeriert
dan lassen sie sich relativ einfach in
einer Schleife ansprechen.

z.B.:

Dim iCnt As Integer
For iCnt = 1 To 2
UserForm1.Controls("Label" & iCnt).BackColor = &HFF& ' die Labels heisen Label1,Label2,..
Next

Bei deinen Namen müsstest du so vorgehen.

Dim lArr() As Variant
Dim iCnt As Integer
lArr = Array("GER", "ESP")'Array mit den Endsilben der Labels
For iCnt = 0 To 1 '0 bis Anzahl der Labels - 1
UserForm1.Controls("lMenuLeft_" & lArr(iCnt)).BackColor = &HFF&
Next

Ich hoffe du kommst damit klar!

Gruß Sepp
Anzeige
AW: Labels mit einer Schleife 'kontrollieren'
08.11.2003 23:00:24
Nepumuk
Hallo Martin,
das geht am besten mit einem Klassenmodul. Ich hab hier mal ein Beispiel.

https://www.herber.de/bbs/user/1812.xls

Gruß
Nepumuk
Danke Sepp, Ddanke Nepumuk!
08.11.2003 23:11:01
Martin
Sepp,
ich habe etwas rumgespielt. Zwar läuft es noch nicht, aber ich bin auf dem richtigem Wege denke ich.

Nepumuk,
vielleicht probiere ich das auch noch einmal aus. Nachteil: diese Methode ist zu langsam. Bei meiner derzeitigen Vversion habe ich keinen 'Zeitverlust', das Umschalten der Farbe funktioniert verzögerungsfrei.

Ich arbeite daran, habe ja jetzt genug Ansätze.
Gute Nacht!
Martin
Anzeige
Neuer Versuch
09.11.2003 06:29:22
Nepumuk
Hallo Martin,
ich habe das Programm geändert. So sollte es deiner Vorstellung von Geschwindigkeit besser entsprechen.

https://www.herber.de/bbs/user/1815.xls

Gruß
Nepumuk
AW: Neuer Versuch
09.11.2003 18:36:55
Martin
Danke Nepumuk, das sieht in der Tat besser aus.

Gruss,
Martin

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige