нашел вот такой код от ZVI
все работает, (правда не знаю как)
Единственно хотелось бы чтобы формат данных в текстбоксе был # ##0р
код от ZVI
'Ввод в TextBox только чисел в заданном диапазоне
'с заданным десятичным разделителем (нажимать можно и точку и запятую)
'с ограничением количества десятичных разрядов
Private Sub TextBox1_Change()
Const MIN = 0 ' минимальное значение
Const MAX = 100000000 ' максимальное значение
Const DECSEP = "." ' дес. разделитель: запятая или точка
Const DECPLACES = 2 ' количество дес. разрядов
Dim i As Double, j As Integer, ds As String, s As String
Static old As String
If DECSEP = "." Then ds = "," Else ds = "."
On Error Resume Next
s = TextBox1
If Len(s) = 0 Then old = "": Exit Sub
s = Replace(Replace(s, " ", ""), ds, DECSEP)
TextBox1 = s
i = CDbl(Replace(s, DECSEP, Mid$(CStr(1.2), 2, 1)))
j = InStr(s, DECSEP)
If j > 0 Then j = Len(s) - j
If err <> 0 Or i < MIN Or i > MAX Or j > DECPLACES Then
TextBox1 = old
Else
old = TextBox1
End If
OKButton.Enabled = True
End Sub
все работает, (правда не знаю как)
Единственно хотелось бы чтобы формат данных в текстбоксе был # ##0р
код от ZVI
'Ввод в TextBox только чисел в заданном диапазоне
'с заданным десятичным разделителем (нажимать можно и точку и запятую)
'с ограничением количества десятичных разрядов
Private Sub TextBox1_Change()
Const MIN = 0 ' минимальное значение
Const MAX = 100000000 ' максимальное значение
Const DECSEP = "." ' дес. разделитель: запятая или точка
Const DECPLACES = 2 ' количество дес. разрядов
Dim i As Double, j As Integer, ds As String, s As String
Static old As String
If DECSEP = "." Then ds = "," Else ds = "."
On Error Resume Next
s = TextBox1
If Len(s) = 0 Then old = "": Exit Sub
s = Replace(Replace(s, " ", ""), ds, DECSEP)
TextBox1 = s
i = CDbl(Replace(s, DECSEP, Mid$(CStr(1.2), 2, 1)))
j = InStr(s, DECSEP)
If j > 0 Then j = Len(s) - j
If err <> 0 Or i < MIN Or i > MAX Or j > DECPLACES Then
TextBox1 = old
Else
old = TextBox1
End If
OKButton.Enabled = True
End Sub