Forums Neueste Beiträge
 

_BeforeUpdate

24/03/2010 - 08:58 von hotzi | Report spam
hallo zusammen,

das unten genannte steuerelement befindet sich auf einer mulitpage.
mit dem BeforeUpdate-Ereignis soll sichergestellt werden, dass dort
nur zahlen größer 0 eingegeben werden können soweit funktioniert das
ganze auch und gibt eine fehlermeldung aus.

wenn ich nun von steuerelement aus eine falsche eingabe mache und die
mulitpage wechsle, muss die fehlermeldung zweimal mit ko quitiert
werden. kann man das unterbinden?

Private Sub txtMEN_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
'Texteingaben und Werte kleiner 0 abfangen
If Not IsNumeric(txtMEN.Text) Or txtMEN.Value <= 0 Then
Cancel = True
Call MsgZahlUeberNullEingeben
txtMEN.SelStart = 0
txtMEN.SelLength = Len(txtMEN)

End If
End Sub


freue mich auf eine antwort.

kaus
 

Lesen sie die antworten

#1 Andreas Killer
24/03/2010 - 17:56 | Warnen spam
hotzi schrieb:

das unten genannte steuerelement befindet sich auf einer mulitpage.
mit dem BeforeUpdate-Ereignis soll sichergestellt werden, dass dort
nur zahlen größer 0 eingegeben werden können soweit funktioniert das
ganze auch und gibt eine fehlermeldung aus.


Nö, ich kann auch Texte eingeben. Erst wenn ich die Textbox verlassen
möchte kommt der Fehler. Unterbinde daher schon bei der Eingabe die
Texteingaben:

schnipp
Private Sub TB_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Làßt nur Zahlen in der Textbox zu
Select Case KeyAscii
Case Asc(Application.International(xlThousandsSeparator))
'Erlaube Tausender Trennzeichen/àndere zu Dezimaltrenner
KeyAscii = Asc(Application.International(xlDecimalSeparator))
Case Asc("0") To Asc("9")
'Erlaube Ganzzahlen
Case Asc("-")
'Erlaube Negative Werte/Berechnungen
Case Asc(Application.International(xlDecimalSeparator)), _
Asc("E"), Asc("e")
'Erlaube Dezimalzahlen
Case Asc("+"), Asc("*"), Asc("/"), Asc("^")
'Erlaube Berechnungen
Case Else
'Nicht erlaubt
KeyAscii = 0
End Select
End Sub

Private Sub txtMEN_KeyPress( _
ByVal KeyAscii As MSForms.ReturnInteger)
TB_KeyPress KeyAscii
End Sub
schnapp

wenn ich nun von steuerelement aus eine falsche eingabe mache und die
mulitpage wechsle, muss die fehlermeldung zweimal mit ko quitiert
werden. kann man das unterbinden?


Indem Du auch das wechseln der Seite verhinderst.

schnipp
Private Sub TB_BeforeUpdate(TB As Control, _
ByVal Cancel As MSForms.ReturnBoolean)
On Error GoTo CancelIt
'Berechne den Wert oder Formeln
TB = Evaluate(Replace(TB.Text, _
Application.International(xlDecimalSeparator), "."))
Exit Sub
CancelIt:
Beep
Cancel = True
End Sub

Private Sub txtMEN_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
'Formeln berechnen
TB_BeforeUpdate txtMEN, Cancel

'Texteingaben und Werte kleiner 0 abfangen
If Not IsNumeric(txtMEN.Text) Or txtMEN.Value <= 0 Then
Cancel = True
'Wechseln der Seite verhindern
MultiPage1.Value = 0

Call MsgZahlUeberNullEingeben
txtMEN.SelStart = 0
txtMEN.SelLength = Len(txtMEN)
End If
End Sub
schnapp

Andreas.

Ähnliche fragen