HERBERS Excel-Forum - das Archiv
Zahlenformat global überprüfen
Andy

Hallo zusammen,
ich bin gerade dabei eine UserForm zu basteln, die ca. 78 TextBoxen hat; diese wird Beträgen ausgefüllt.
Ich habe einen Code, der eine einzelne Box überprüfen kann:


Private Sub TextBox8_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
' Ansatz VB 6 Buch von Peter Monadjemi
' nur Zahlen, ein Komma und nur 2 Stellen nach Komma
Select Case KeyAscii
Case Asc("0") To Asc("9")
If InStr(TextBox8, ",") <> 0 Then
If Len(TextBox8) - InStr(TextBox8, ",") > 1 Then KeyAscii = 0
End If
Case Asc("."), Asc(",")
If InStr(TextBox8, ",") <> 0 Then
KeyAscii = 0
Else
KeyAscii = Asc(",")
End If
Case Asc(vbBack)
'       Eingabe von minus
Case Asc("-")
'            If Len(Textbox8) = 0 Then
'                If InStr(Textbox8, "-") <> 0 Then
'                Else
'                    KeyAscii = Asc("-")
'                End If
'            Else
'                KeyAscii = 0
'            End If
Case Else
KeyAscii = 0
End Select
End Sub


Jetzt zu meiner Frage:
Kann mir jemand helfen, einen Code zu schreiben, den ich global einsetzen kann und den ich nicht jeder TextBox zuordnen muß? -
quasi eine Sub, die ich dann nur bei der Aktualisierung der jeweiligen TextBox abfrage?
Ich hoffe Ihr versteht mich...
LG
Andy

AW: Zahlenformat global überprüfen
Hajo_Zi

Hallo Andy,
hast Du Dir da nicht ein wenig viel vorgenommen?
Als Ansatz http://hajo-excel.de/chCounter3/getfile.php?id=112

AW: Zahlenformat global überprüfen
Gerd

Hallo Andy!
' **************************************************************
' Modul: UserForm1 Typ = Userform
' **************************************************************
Option Explicit
Dim ufTBKlasse(1 To 3) As clsTextBox


Private Sub UserForm_Initialize()
Dim i As Integer
For i = 1 To 3
Set ufTBKlasse(i) = New clsTextBox
Set ufTBKlasse(i).TB = Me.Controls("TextBox" & i)
Next
End Sub



Private Sub UserForm_Terminate()
Dim i As Integer
For i = 1 To 3
Set ufTBKlasse(i).TB = Nothing
Set ufTBKlasse(i) = Nothing
Next
End Sub


' **************************************************************
' Modul: clsTextBox Typ = Klassenmodul
' **************************************************************
Option Explicit
Public WithEvents TB As MSForms.TextBox


Private Sub TB_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
' Ansatz VB 6 Buch von Peter Monadjemi
' nur Zahlen, ein Komma und nur 2 Stellen nach Komma
Select Case KeyAscii
Case Asc("0") To Asc("9")
If InStr(TB, ",") <> 0 Then
If Len(TB) - InStr(TB, ",") > 1 Then KeyAscii = 0
End If
Case Asc("."), Asc(",")
If InStr(TB, ",") <> 0 Then
KeyAscii = 0
Else
KeyAscii = Asc(",")
End If
Case Asc(vbBack)
'       Eingabe von minus
Case Asc("-")
'            If Len(Textbox8) = 0 Then
'                If InStr(Textbox8, "-") <> 0 Then
'                Else
'                    KeyAscii = Asc("-")
'                End If
'            Else
'                KeyAscii = 0
'            End If
Case Else
KeyAscii = 0
End Select
End Sub


Gruß Gerd

AW: Zahlenformat global überprüfen
Andy

Hallo Hajo,
ich denke, das "zuviel vorgenommen" bezieht sich auf die 78 Stk. ;-))))
nein nein...
eigentlich habe ich es so gemeint...
ich habe mehrere TextBox`n die immer im (Zahlen-)Format #0,00 ausgefüllt werden sollen.
Den angegebenen Code kann ich zwar bei allen einzeln aufführen, aber das ist eine ....eiß arbeit ;-)
Ich habe einen Code für die Datumsüberprüfung, und sowas suche ich auch für das Zahlenformat.
Hier mal die Datumsüberprüfung...


Sub Datumsformat_prüfen(feld As Object)
If Not IsNumeric(feld.Value) Then feld.Value = 0
If feld = "" Then feld.Value = 0
If feld = " " Then feld.Value = 0
If BoEnter = True Then Exit Sub
If Len(feld) = 2 Then
If InStr(feld, ".") = 0 And BoEnter = False Then feld = feld & "."
Else
If Len(feld) = 5 Then
If Len(feld) - Len(Application.Substitute(feld, ".", "")) < 2 Then
feld = feld & "."
End If
End If
End If
End Sub


... und somit spare ich mir bei jeder TextBox die Eingabe des gesamten Codes;
ich hoffe ich kann mich in meiner "unprofessionellen" Ausdrucksweise verständlich machen...
Wäre super, wenn Du/Ihr mir einen solchen Code zukommen lassen könntet.
LG
Andy

AW: Zahlenformat global überprüfen
Hajo_Zi

Hallo Andy,
die Anzahl ist egal. Es Bezog sich auf den Level. Siehe Dir mein Beispiel an.
Gruß Hajo