AW: Timer-Steuerelement
12.12.2019 14:21:47
Sven
Okay, "frm" habe ich irgendwie immer als Frames, "uf" als UserForm. Aber sei's drum.
Vielen Dank für die Hilfe. Einen kleinen Bug habe ich noch - vielleicht kannst Du da ja auch beistehen:
Ich habe jetzt also die Prozedur zum Anzeigen der Message:
Sub ufMessage(strHeadline As String, strMessage As String, intStyle As Integer, Optional _
blnAutoHide = True)
Call ufMessageHide
lblInfo1.Caption = strHeadline
lblInfo2.Caption = strMessage
Select Case intStyle
Case 1
lblInfo1.BackColor = &HC0FFC0
lblInfo2.BackColor = &HC0FFC0
frmInfo.BackColor = &HC0FFC0
Case 2
lblInfo1.BackColor = &HC0FFFF
lblInfo2.BackColor = &HC0FFFF
frmInfo.BackColor = &HC0FFFF
Case 3
lblInfo1.BackColor = &H80C0FF
lblInfo2.BackColor = &H80C0FF
frmInfo.BackColor = &H80C0FF
End Select
With frmInfo
.Visible = True
.ZOrder (0)
End With
If blnAutoHide = True Then
Application.OnTime Now + TimeValue("00:00:05"), "ufMessageHide"
blnMessageHidePending = True
End If
End Sub
Und die Prozedur (in einem anderen Modul) zum Ausblenden:
Sub ufMessageHide()
ufMain.frmInfo.Visible = False
If blnMessageHidePending = True Then
Application.OnTime Now + TimeValue("00:00:05"), "ufMessageHide", , False
blnMessageHidePending = False
End If
End Sub
Jetzt habe ich testweise zwei Schaltflächen:
Private Sub CommandButton1_Click()
Call ufMessage("Testnachricht Typ 1", "Blablablablablablablablabla" & vbCrLf & vbCrLf & "( _
verschwindet automatisch)", 1, True)
End Sub
und
Private Sub CommandButton2_Click()
Call ufMessage("Testnachricht Typ 2", "Blablablablablablablablabla" & vbCrLf & "lknmghklä _
ghklmgh", 2, False)
End Sub
Die erste Schaltfläche zeigt die Meldung also an und blendet sie nach fünf Sekunden aus.
Bei der zweiten Schaltfläche wird nicht automatisch ausgeblendet.
Für sich alleine klappt das.
Aber: Klicke ich auf die erste Schaltfläche (Timer startet also) und vor Ablauf des Timers auf die zweite Schaltfläche, hätte ich erwartet, dass der Timer durch das Schedule = false angehalten wird und die zweite Message nicht mehr verschwindet. Stattdesen bekomme ich einen "Laufzeitfehler 1004 - Die Methode 'OnTime' für das Objekt '_Application' ist fehlgeschlagen".
Kannst Du das nachvollziehen?
Grüße
Sven