steuerelement, das nur zahlen aufnimmt

14/08/2009 - 15:38 von klaus.könig | Report spam
hallo zusammen,

welches steuerelement verwende ich am besten in einer userform, um
drin ausschließlich zahlen aufzunehmen. ist dafür ein textfeld
geeignet und wenn ja, wie prüfe ich die eigenschafte zahl ab.

freue mich auf eine antwort


klaus
 

Lesen sie die antworten

#1 Andreas Killer
14/08/2009 - 16:17 | Warnen spam
klaus.könig schrieb:

welches steuerelement verwende ich am besten in einer userform, um
drin ausschließlich zahlen aufzunehmen. ist dafür ein textfeld
geeignet und wenn ja, wie prüfe ich die eigenschafte zahl ab.


Ja, prüfe die Eingabe mit dem KeyPress-Ereignis der Textbox und weise
ggf. dem Textencode den Wert 0 zu um ihn zu unterdrücken.

Um das ganze etwas universeller zu gestalten kann man eine Routine
implementieren die die Prüfung vornimmt und diese dann im jeweiligen
Ereignis aufrufen.

Ich finde es außerdem immer schick wenn ich in eine Textbox auch 7*12
eingeben kann und diese dann automatisch 84 ausrechnet.

Andreas.

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

Private Sub TB_KeyPress(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 Textbox1_KeyPress( _
ByVal KeyAscii As MSForms.ReturnInteger)
TB_KeyPress KeyAscii
End Sub

Private Sub Textbox1_BeforeUpdate( _
ByVal Cancel As MSForms.ReturnBoolean)
TB_BeforeUpdate Textbox1, Cancel
End Sub

Ähnliche fragen