Установка минимального значения для текстового поля

Я использую пользовательскую форму с несколькими текстовыми полями. Мне было интересно, есть ли способ заставить пользователя вводить минимальное значение или выше, прежде чем переходить к следующему текстовому полю.

Большое спасибо,


person Lizmert Lopez    schedule 18.08.2015    source источник
comment
Посмотрите на события TextBox1_KeyDown или Keypress. В этом случае вы можете проверить значение другого текстового поля и залог, если оно не было установлено.   -  person MatthewD    schedule 18.08.2015


Ответы (1)


Предполагая, что одно из ваших текстовых полей называется TextBox1, вы можете поместить этот код в свою пользовательскую форму:

Option Explicit

Dim blnClosing As Boolean

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

        If blnClosing = False Then

                Dim iVal As Integer
                Dim minVal As Integer

                minVal = 10 'Change to your needs

                'Test for numeric characters
                On Error Resume Next
                iVal = CInt(Me.TextBox1.Value)

                'If characters are not numeric
                If Err.Number = 13 Then
                        MsgBox "Value must be numeric!", vbCritical, "Incorrect Value"
                        Me.TextBox1.Text = vbNullString
                        Cancel = True 'Retain focus on the textbox
                        Exit Sub
                End If

                'Reset error handling to normal
                On Error GoTo 0

                'Check if textbox value is less than the minimum
                If Me.TextBox1.Value < minVal Then
                        MsgBox "Value must be greater than " & minVal & "", vbCritical, "Incorrect Value"
                        Me.TextBox1.Value = vbNullString
                        Cancel = True 'Retain focus on the textbox
                End If
        End If
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
        blnClosing = True
End Sub

Я также позволил себе проверить числовое значение, поскольку вы спрашиваете, должно ли значение в текстовом поле быть числовым. Если это не так, удалите строки кода от комментария 'Test for numeric characters до строки On ErrorGoTo 0.

Глобальная переменная blnClosing позволяет нам пропускать код при закрытии формы. Если это не было включено, и пользователь нажал «X» в верхнем правом углу формы с недопустимыми данными (пустыми, меньше минимума или нечисловыми), тогда будут отображаться окна сообщений.

person Soulfire    schedule 18.08.2015