Шаг 59 - Проверка ввода на уровне формы (KeyDown, KeyUp, KeyPress)

События:

KeyDown
KeyUp
KeyPress

Посылаются форме когда производится ввод данных. Событие KeyPress возникает когда пользователь нажимает клавишу, у которой есть ASCII код. Это событие не сгенирируется при нажатии функциональных клавиш. При том эти события есть как у формы:

Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

End Sub

Так и у элементов управления TextBox, например:

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

End Sub

А это в свою очередь позволяет проверять ввод. Например, если в поле нужно ввести цифру, то легко проверить, что вводит пользователь. События KeyUp и KeyDown применяются для специальных функциональных клавиш или комбинаций типа Ctrl+Del, так как событие KeyPress их не отловит. Удобно использовать данное событие для проверки заполненности полей. Вот форма:

А вот код для нее. В момент нажатия ввода символа в поле проверяется заполненость полей:

Private Sub Test()
	Dim ctrl As Control
	Dim bool As Boolean
	bool = True
	For Each ctrl In Controls
		If TypeName(ctrl) = "TextBox" Then
			If ctrl.Text = "" Then
				bool = False
			End If
		End If
	Next ctrl
	UserForm1.CommandButton1.Enabled = bool
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
	Call Test
End Sub

Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
	Call Test
End Sub

Private Sub TextBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
	Call Test
End Sub

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.