Перемещение в форме Exel?
Модератор: Naeel Maqsudov
Проверяю условия при вводе текста в TextBox. Если условия не выполняются, появляется сообщение о соответствующем нарушении условия. Как при этом "удержать" курсор в TextBox, до тех пор пока не будет введены данные, удовлетворяющие условиям.
Например так
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
If TextBox1.Text = "" Then
MsgBox "Введите текст"
KeyCode = 0
End If
End If
End Sub
При нажатии Enter. если TextBox1.Text = "" появится сообщение и фокус из TextBox1 не уйдёт
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
If TextBox1.Text = "" Then
MsgBox "Введите текст"
KeyCode = 0
End If
End If
End Sub
При нажатии Enter. если TextBox1.Text = "" появится сообщение и фокус из TextBox1 не уйдёт
Это слишком просто, а главное совершенно не влияет на управление перемещением курсора мышью.
А что если попробывать поиграться со свойством Enabled остальных элементов управления?
Я не волшебник, я только учусь...
Если при вводе данных участвует мышь, то используй событие TextBox1_Exit, возникающее при покидании фокуса из TextBox1.
И там проверь введённый текст.
И там проверь введённый текст.
To NiTrex:
Поиграл с Enabled, а заодно и с Locked. Мешают кнопки, присутствующие на форме... и реакция после исправления, то есть после введения данных, удовлетворяющих условию.
To Дмит:
Свойство Exit может быть и удобно для проверки условия, но не возвращает фокус обратно...
Может быть всё-таки есть какой-нибудь метод, позволяющий установить курсор в форме... туда, куда надо???
Поиграл с Enabled, а заодно и с Locked. Мешают кнопки, присутствующие на форме... и реакция после исправления, то есть после введения данных, удовлетворяющих условию.
To Дмит:
Свойство Exit может быть и удобно для проверки условия, но не возвращает фокус обратно...
Может быть всё-таки есть какой-нибудь метод, позволяющий установить курсор в форме... туда, куда надо???
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Код: Выделить всё
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.Text <> "2" Then Cancel = True
End Sub
Для перемещения курсора используется метод XXX.SetFocus, но он тут совсем не нужен. Достатосно Cancel=true