Wie bekomme ich die Label.Caption zum Blinken?


03.06.2022, 15:48

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
Woher ich das weiß:Berufserfahrung – Berufliche und eigene Erfahrung, ergänzend.

fx8350 
Beitragsersteller
 07.06.2022, 11:56

Waren noch Fehler, habe die Zeit nun gespeichert, damit auch immer problemlos beendet wird.

0