Volgens mij moet je de check gewoon boven de handeling zetten (en een exit sub toevoegen)
Private Sub txtTijd_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If TxtTijd.Text = "" Then Exit Sub
If Not IsDate(TxtTijd.Text) Then
MsgBox "De ingevoerde waarde '" & TxtTijd.Text & "' is géén tijd! Herstel dit...", vbOKOnly, "Foute invoer"
TxtTijd.Text = ""
TxtTijd.SetFocus
TxtTijd.SelStart = 0
TxtTijd.SelLength = Len(TxtTijd.Text)
Cancel = True
exit sub
End If
If InStr(1, TxtTijd.Text, ":") = 0 Then
TxtTijd.Text = TimeSerial(0, CInt(Left(TxtTijd.Text, Len(TxtTijd.Text) - 2)), CInt(Right(TxtTijd.Text, 2)))
End If
End Sub