Я использую пользовательскую форму с несколькими текстовыми полями. Мне было интересно, есть ли способ заставить пользователя вводить минимальное значение или выше, прежде чем переходить к следующему текстовому полю.
Большое спасибо,
Я использую пользовательскую форму с несколькими текстовыми полями. Мне было интересно, есть ли способ заставить пользователя вводить минимальное значение или выше, прежде чем переходить к следующему текстовому полю.
Большое спасибо,
Предполагая, что одно из ваших текстовых полей называется 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» в верхнем правом углу формы с недопустимыми данными (пустыми, меньше минимума или нечисловыми), тогда будут отображаться окна сообщений.