Einzelne Variable im Label blinken lassen?

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm Label TextBox
Bild

Betrifft: Einzelne Variable im Label blinken lassen?
von: Ingo
Geschrieben am: 09.10.2015 09:06:32

Hallo zusammen,
ich habe eine UserForm und möchte den Text von Label2 nicht vollständig blinken lassen. Es soll nur der Text einer Variablen blinken.
(Die Idee mit zwei verschiedenen Labels wäre ungünstig wegen der Positionierung des Textes. Der Text von Label2 und Label3 wäre dann nicht mehr "gesamt-zentriert" wie in Label2 allein.)
Label2 enthält:
Me.Label2.Caption = Variable1 & " --> evtl. --> " & Variable2 & " ?"
Nur der Text der Variable1 soll 3x blinken bei UserForm_Activate. Der übrige Text soll die im Label eingestellte Farbe beibehalten.
Hat bitte jemand eine Lösung dafür oder kann man tatsächlich nur den Text des gesamten Labels blinken lassen?
Danke.
LG
Ingo

Bild

Betrifft: AW: Einzelne Variable im Label blinken lassen?
von: Nepumuk
Geschrieben am: 09.10.2015 09:28:37
Hallo Ingo,
ein Beispiel:

Option Explicit

Private Declare Sub Sleep Lib "kernel32.dll" ( _
    ByVal dwMilliseconds As Long)

Private Sub UserForm_Activate()
    Dim strVariable1 As String, strVariable2 As String
    Dim lngIndex As Long
    strVariable1 = "Hallo"
    strVariable2 = "Ingo"
    For lngIndex = 1 To 3
        Label1.Caption = strVariable1 & " " & strVariable2
        DoEvents
        Call Sleep(1000)
        Label1.Caption = strVariable1
        DoEvents
        Call Sleep(1000)
    Next
    Label1.Caption = strVariable1 & " " & strVariable2
End Sub

Gruß
Nepumuk

Bild

Betrifft: AW: Einzelne Variable im Label blinken lassen?
von: Ingo
Geschrieben am: 09.10.2015 10:40:45
Hallo Nepumuk,
danke für deinen Tipp. Ich habe den Code an meine Variablen usw. angepasst. Es ist nicht ganz die Lösung, weil die Variable1 und Variable1+Variable2 abwechselnd angezeigt werden. Ich möchte gern, dass beide Variablen angezeigt werden, während die Variable1 allein z. B. rot blinkt und Variable2 weiterhin Textfarbe schwarz bleibt. Aber dennoch ist es ein guter Ansatz und ich kann mir daraufhin evtl. etwas weiteres basteln. Danke. ;-)

Bild

Betrifft: AW: Einzelne Variable im Label blinken lassen?
von: Tino
Geschrieben am: 09.10.2015 10:10:53
Hallo,
einzelne Textbereiche im Label Farbig darstellen ist mir nicht bekannt.
Man könnte aber eine Zelle dafür verwenden,
diese Zelle nach Gestaltung als Bild kopieren und als Hintergrund verwenden.
(aber ob das Sinnvoll ist möchte ich nicht beurteilen!)
https://www.herber.de/bbs/user/100675.xlsm
Gruß Tino

Bild

Betrifft: AW: Einzelne Variable im Label blinken lassen?
von: Ingo
Geschrieben am: 09.10.2015 11:35:34
Hallo Tino,
danke, ich bin für unkonventionelle Tipps ebenso aufgeschlossen. ;-) Ich vermute jedoch, dass es mit einem Bild (von Variable1) ebenso nicht zentrierten Text bewirkt, wie mein Beispiel mit 2 Labels nebeneinander. Ich hätte schon gern, dass nur Variable1 innerhalb eines Labels blinkt, während der übrige Text und Variable2 weiterhin mit Textfarbe schwarz (nicht blinkend) angezeigt wird.
Hat vielleicht noch jemand eine weitere Idee?

Bild

Betrifft: zwei Label, Positionierung im Code.
von: Tino
Geschrieben am: 09.10.2015 11:48:06
Hallo,
hier mal mit zwei Label, Positionierung erfolgt im Code.
Wenn es noch dazwischen sein muss, braucht man entsprechend mehr.
https://www.herber.de/bbs/user/100679.xlsm
Gruß Tino

Bild

Betrifft: AW: zwei Label, Positionierung im Code.
von: Ingo
Geschrieben am: 09.10.2015 17:05:38
Danke Tino.

Bild

Betrifft: AW: Einzelne Variable im Label blinken lassen?
von: Daniel
Geschrieben am: 09.10.2015 11:33:29
Hi
im Label kannst du die Schriftfarbe nur für das ganze Label festlegen.
die einfachste Lösung dürfte wohl das übereinander legen von zwei Labels mit unterschiedlichen Schriftfarben sein.
Das Postitionierungsproblem löst du so:
1. verwende für beide Labels eine nicht-proportionale Schriftart, z.B. Courier
2. im Label mit der Alternativ-Farbe schreibst du nur das Blinkwort aus und füllst die restlichen Zeichen mit Leerzeichen auf, so dass beide Labels die gleiche Anzahl Zeichen haben und das Blinkwort an der gleichen Postion im Text steht.
3. im Blinklabel setzt du den Hintergrund auf Transparent und in der ziehst es in die Ebene vor dem Textlabel
4. jetzt kannst du beide Labels auf die gleiche Top- und Left-Position setzen und für das Blink-Label im Rhythmus die Eigenschaft .Visible im Wechsel auf True und False setzen.
durch die nichtproportionale Schriftart ist gewährleistet dass die Zeichen an der gleichen Postion liegen, wenn die Lables das gleiche Top- und Left- haben.
funktioniert halt leider nur mit nicht-proportionalen Schriftarten, weil hier die Postition der einzelnen Buchstaben nur von der Anzahl der davorliegenden Buchstaben abhängt, aber nicht von den Buchstaben selbst und du so die einzelnen Wörter über Leerzeichen exakt platzieren kannst.
Gruß Daniel

Bild

Betrifft: AW: Einzelne Variable im Label blinken lassen?
von: Ingo
Geschrieben am: 09.10.2015 12:14:31
Hallo Daniel,
danke, das wäre auch eine Möglichkeit. Meine Variablen haben jedoch verschiedene Zeichenlängen:
Variable1 kann 3-12 Zeichen lang sein
Variable2 kann 5-14 Zeichen lang sein
Somit wäre der Label1-Text nur ab und zu an der ca. richtigen Position. Man müsste Label1 so groß ziehen und weit entfernt platzieren, dass auch der längste Text angezeigt wird und kein Überdecken des Label2-Textes stattfindet. Dies würde dann wiederum einen nicht zentrierten Gesamt-Text (Label1+Label2) in der UserForm zur Folge haben, wie bei 2 Labels nebeneinander. ;-)

Bild

Betrifft: AW: Einzelne Variable im Label blinken lassen?
von: Daniel
Geschrieben am: 09.10.2015 12:25:39
Hi
jetzt verstehe ich dich nicht.
ich denke, dass es darum geht dass du EIN Label mit einem längeren Satz hast, in welchem einzelne Worte aber nicht der ganze Satz blinken sollen.
wenn du zwei Labels hast, dann hast du doch gar kein Problem, weil einzelne gesamte Labels kannst du ja problemlos blinken lassen.
Gruß Daníel

Bild

Betrifft: AW: Einzelne Variable im Label blinken lassen?
von: Daniel
Geschrieben am: 09.10.2015 12:49:03
Hier ein Beispiel:
https://www.herber.de/bbs/user/100682.xlsm
Gruß Daniel

Bild

Betrifft: AW: Einzelne Variable im Label blinken lassen?
von: Ingo
Geschrieben am: 09.10.2015 17:12:36
Hallo Daniel,
du hast es schon richtig verstanden, wie du selbst schreibst. Ich habe nur ein Label und darin soll nur eine von zwei Variablen blinken. Das mit den 2 Labels hatte ich nur beispielhaft anhand deines Lösungsvorschlages genannt, weil es Probleme mir der Positionierung machen würde.
LG
Ingo

Bild

Betrifft: AW: Einzelne Variable im Label blinken lassen?
von: Daniel
Geschrieben am: 09.10.2015 17:24:35
Hi
naja, dann passt meine Lösung doch.
du musst dann nur noch die Caption für das Blink-Label entsprechend der Variablen erstellen, dh:
Postion der Variablen im Textlabel finden und dann soviele Leerzeichen erstellten und dann die Variable anhängen.
sieht in etwa so aus, um den Text "XXX" blinken zu lassen:

Label1.Caption = "aaa bbb XXX ccc ddd eee"
Var1 = "XXX" 
if Instr(Label1.Caption, Var1) > 0 then
    Label2.Caption = String(Instr(Label1.Caption, Var1), " ") & Var1
Else 
    Label2.Caption = ""
end if
dann nur noch, falls noch nicht geschehen, die Lables übereinander schieben und für das Label2 die .Visible-Eigenschaft im Takt zwischen TRUE und FALSE wechseln lassen.
Gruß Daniel

Bild

Betrifft: AW: Einzelne Variable im Label blinken lassen?
von: Daniel
Geschrieben am: 09.10.2015 18:26:03
Hier mal ein Beispiel.
man kann einzelne Wörter oder auch mehrere Wörter blinken lassen.
in der "mehrwort"-Version musst du zum Wechlseln der Wörter das Blinken ausschalten.
https://www.herber.de/bbs/user/100689.xlsm
Gruß Daniel

Bild

Betrifft: AW: Einzelne Variable im Label blinken lassen?
von: Ingo
Geschrieben am: 10.10.2015 10:20:09
Danke Daniel,
ich werde eine kombinierte Variante aus mehreren Tipps verwenden, da es scheinbar keine andere Möglichkeit gibt, alles in nur einem Label durchzuführen.
Gruß
Ingo

Bild

Betrifft: Label in UF blinken lassen
von: EtoPHG
Geschrieben am: 09.10.2015 14:11:28
Ingo,
Hier ein Vorschlag, bei dem die Längen / Position der 2 Labels automatisch dem Inhalt der Variablen (Text der beiden TextBoxen) angepasst wird. Der Font spielt keine Rolle.
Userform mit einem blinkenden Label
Gruess Hansueli

Bild

Betrifft: AW: Label in UF blinken lassen
von: Ingo
Geschrieben am: 09.10.2015 18:54:28
Hallo Hansueli,
danke, das Beispiel kommt schon nahe an meine Vorstellung heran. Ich habe es für meine Bedürfnisse umgebaut. Es klappt soweit gut. Das Problem mit dem Zentrieren der Texte und Variablen besteht noch. Ich werde probieren, ob ich die zwei Labels noch automatisch anpassen lassen kann, damit diese sich selbst zentrieren. Der Text des Label1 wird sonst, ab einer bestimmten Zeichenlänge, vom Label2 verdeckt. Aktuell (zum Testen) lasse ich Label1 noch etwas weiter vor Label2 stehen. Dies sieht optisch nicht so gut aus. ;-)

Bild

Betrifft: AW: Einzelne Variable im Label blinken lassen?
von: Ingo
Geschrieben am: 10.10.2015 16:04:14
Hallo zusammen,
danke nochmal für eure Tipps. Hier ist nun meine funktionierende Variante.
Ich habe [Label2][Label6] horizontal nebeneinander in der UserForm5, an der Stelle wo sie angezeigt werden sollen, platziert. Der Text in Label2 blinkt 5x rot/schwarz, wenn UserForm_Activate. Label2 (= Variable1) und Label6 (= Text & Variable2 & Text) passt sich automatisch der Länge der enthaltenen Zeichenkette an. Die Position der Labels wird anhand Label2 automatisch festgelegt und in der UserForm5 zentriert dargestellt. D. h. beide Labels gemeinsam werden zentriert dargestellt. Die automatische Zentrierung kann noch zusätzlich manuell optimiert werden.
'Wichtig: In der Userform5 bei Label2 und Label6 müssen die Eigenschaften
'Autosize = True
'WordWrap = False
'manuell eingestellt werden.
'Labelinhalt festlegen
UserForm5.Label2.Caption = variable1
UserForm5.Label6.Caption = " --> evtl. --> " & variable2 & " ?"
'Mitte der UserForm ermitteln
mitte_UF5 = UserForm5.Width / 2
'Gemeinsame Mitte der beiden Labels ermitteln
mitte_L_ges = (UserForm5.Label2.Width + UserForm5.Label6.Width) / 2
'Startposition des Label2 ermitteln/festlegen ("-3" ist meine persönliche "Feineinstellung")
UserForm5.Label2.Left = mitte_UF5 - mitte_L_ges - 3
'Blinkrate vorgeben (hier blinkt der Text in Label2 5x, d. h. bei i = 1, 3, 5, 7, 9)
For i = 1 To 10 '* s. u.
t = Timer + 0.1

'Startposition des Label6 anhand der Position und Breite des Label2 festlegen
With UserForm5.Label6
.Left = UserForm5.Label2.Left + UserForm5.Label2.Width
DoEvents

If .ForeColor = UserForm5.Label2.ForeColor Then
UserForm5.Label2.ForeColor = vbRed 'Textfarbe rot

Do Until Timer > t
DoEvents
Loop
t = Timer + 0.1

Else
UserForm5.Label2.ForeColor = UserForm5.Label6.ForeColor
End If
End With

Do Until Timer > t
DoEvents
Loop
Next i
'* Label2-Text auf die ursprüngliche Farbe zurücksetzen, da bei einer ungeraden
'Anzahl der Schleifendurchläufe (z. B. i = 9) die Textfarbe rot bleiben würde.
UserForm5.Label2.ForeColor = UserForm5.Label6.ForeColor
Vielleicht kann es jemand auch für seine Zwecke einsetzen.
Gruß
Ingo
PS. Ich mag "quick ´n´ dirty", deshalb stehen oben keine Deklarationen usw. Mein Excel-Tool, in das ich o. g. zusätzlich eingebaut habe, hat >3000 Codezeilen und funktioniert auch mit quick `n` dirty einwandfrei. ;-)

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Einzelne Variable im Label blinken lassen?"