Wie bekomme ich die Label.Caption zum Blinken?
Hallo,
vielleicht seit ihr wieder schneller als ich, ich suche schon länger. Ich möchte dass der Text unter einem bestimmten Umstand blinkt. Etwa so:
If Not wks.Cells(Zeile, abschlussd).Value = "erledigt" Then
Me.TimerInterval = 500
Else
End If
Der Code steht im userForm Initialize
Ich möchte diesen Code sozusagen aufrufen:
Private Sub Timer_Timer()
Me.Label37.Visible = Not Me.Label37.Visible
End Sub
Mit Timern habe ich noch nie gearbeitet und ich verstehe nicht den Aufbau.
Vielleicht kann jemand helfen und die Lücken schließen?
Danke.
Ich habe nun einen anderen Lösungsansatz gebastelt, leider funktioniert es nicht:
Im UserForm4_Initialize zum Aufrufen der Funktion:
If Not wks.Cells(Zeile, abschlussd).Value = "erledigt" Then
Application.OnTime Now + TimeSerial(0, 0, 1), "Blink"
Else
End If
Als Public Sub das was nicht funktioniert:
Public Sub LabelTxt()
Select Case True
Case Is = &HC000& Or &H80FF& Or &HFF&
Me.Label37.ForeColor = &H8000000F
End Select
Select Case Me.Label37.ForeColor = &H8000000F
Case Me.Label37.Caption < 14
Me.Label37.ForeColor = &HC000&
Case Me.Label37.Caption = 14
Me.Label37.ForeColor = &H80FF&
Case Me.Label37.Caption > 14
Me.Label37.ForeColor = &HFF&
End Select
Application.OnTime Now + TimeSerial(0, 0, 1), "Blink"
End Sub
Und außerdem, auch hier gibt es eine Fehlermeldung wenn ich die Form schließe:
Private Sub UserForm_Terminate()
Application.OnTime Now + TimeSerial(0, 0, 1), "Blink", Schedule:=False
End Sub
Im Modul dann:
Public Sub Blink()
UserForm4.LabelTxt
End Sub
Ich kann leider den Code nicht schrittweise prüfen, damit ich genauer erkennen kann, wo mein Denkfehler ist.
Vielleicht kann das jemand verstehen und mir helfen?
1 Antwort
Hallo,
nur falls es interessiert: Ich habe es nun soweit hinbekommen, zumindest scheint es so zu funktionieren:
Modul:
Public Sub Blink()
UserForm4.LabelTxt
End Sub
UserForm_Initialize:
...
If Not wks.Cells(Zeile, abschlussd).Value = "erledigt" Then
Application.OnTime Now + TimeSerial(0, 0, 1), "Blink"
Else
End If
UserForm:
Public Sub LabelTxt()
Dim LC As String
LC = Me.Label37.Caption
Select Case True
Case Me.Label37.ForeColor = &HC000& Or Me.Label37.ForeColor = &H80FF& Or Me.Label37.ForeColor = &HFF&
Me.Label37.ForeColor = &H8000000F
Case Else
Select Case True
Case LC < 14
Me.Label37.ForeColor = &HC000&
Case LC = 14
Me.Label37.ForeColor = &H80FF&
Case LC > 14
Me.Label37.ForeColor = &HFF&
End Select
End Select
Application.OnTime Now + TimeSerial(0, 0, 1), "Blink"
End Sub
Private Sub UserForm_Terminate()
On Error Resume Next
Application.OnTime Now + TimeSerial(0, 0, 1), "Blink", schedule:=False
End Sub
Private Sub UserForm_Deactivate()
On Error Resume Next
Application.OnTime Now + TimeSerial(0, 0, 1), "Blink", schedule:=False
End Sub
Private Sub UserForm_Error(ByVal Number As Integer, ByVal Description As MSForms.ReturnString, ByVal SCode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, ByVal CancelDisplay As MSForms.ReturnBoolean)
On Error Resume Next
Application.OnTime Now + TimeSerial(0, 0, 1), "Blink", schedule:=False
End Sub
Workbook:
Private Sub Workbook_close()
On Error Resume Next
Application.OnTime Now + TimeSerial(0, 0, 1), "Blink", schedule:=False
End Sub
Waren noch Fehler, habe die Zeit nun gespeichert, damit auch immer problemlos beendet wird.