Когда Const MIN = 0 - всё работает, а когда Const MIN = 18 не работает...
яПолучается, что минемальное знвчение 18, а 1 уже меньше при вводе и толку от этого, когда нужно ограничение с 16 до 30, например...
Что-то не могу сообразить вот попоробуйте
Private Sub TextBox1_Change()
Const MIN = 18 ' <== минимальное значение
Const MAX = 100 ' <== максимальное значение
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
End Sub
яПолучается, что минемальное знвчение 18, а 1 уже меньше при вводе и толку от этого, когда нужно ограничение с 16 до 30, например...
Что-то не могу сообразить вот попоробуйте
Private Sub TextBox1_Change()
Const MIN = 18 ' <== минимальное значение
Const MAX = 100 ' <== максимальное значение
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
End Sub