Страницы: 1
RSS
Как снять фокус с TextBox из формы при активной форме
 
Добрый день всем !

Делаю форму для занесения телефонного номера в определенном формате из TextBox формы в активную ячейку в диапазоне C4:C500 листа
Такая последовательность действий
1)Вызываем форму даблкликом в ячейке диапазона листа
2)Форма вызывается, при вызове в TextBox формы уже прописано как будет выглядеть образец записи в активную ячейку
При этом фокус курсора находится в  TextBox
Код
Private Sub UserForm_Activate()
  ZVI_SetFormPosition Me  ' <-- Привязка формы к активной ячейке
  TextBox1.Value = "+7(###)###-##-##" 'в TextBox1 светится при активации формы как будет выглядеть тел номер после занесения в активную ячейку
  'TextBox1.SetFocus = False 'снимаем фокус с TextBox1 формы ВОТ ЭТА КОМАНДА НЕ КАТИТ
End Sub
Здесь Надо вывести курсор из активного состояния в TextBox
Пробую выше в коде TextBox1.SetFocus = False 'снимаем фокус с TextBox1 формы - не прокатывает

3)Далее по событию
Код
Private Sub TextBox1_Change()
'TextBox1.SetFocus = 'устанавливаем фокус в TextBox1 формы
'TextBox1.Value = "" 'стираем предыдущее значение
'TextBox1.Value = "+7" 'заносим автоматом значение +7 для последующего ввода 10 цифр телефонного номера
Как снять фокус с TextBox1 формы ?   'TextBox1.SetFocus = False не работает
Пример во вложении
Изменено: oleg355 - 17.05.2018 16:31:15
 
поставить фокус на кнопку не вариант?
 
Фокус, он есть. И будет есть.
Он не штаны, и снять его нельзя.
Но передать соседу можно. Конечно, если сосед имеется.
Изменено: RAN - 17.05.2018 17:24:50
 
Те можно на форме сделать 2-й текстбокс и передавать фокус на него?
Подскажите как передавать ?
 
сосед.SetFocus
 
И как еще правильно условие прикрутить допустим так
на старт формы
Код
Private Sub UserForm_Activate()
  ZVI_SetFormPosition Me  ' <-- Привязка формы к активной ячейке
  TextBox1.Value = "+7(###)###-##-##" 'в TextBox1 светится при активации формы как будет выглядеть тел номер после занесения в активную ячейку
  CommandButton3.SetFocus 'устанавливаем фокус CommandButton3 и снимаем фокус с TextBox1 формы
End Sub


и само условие чегото не сработало
Код
Private Sub TextBox1_Change()
If CommandButton3.SetFocus = True Then
TextBox1.Value = "+7(###)###-##-##"
Else
TextBox1.Value = "+7"
End If

 
 
Ну да, это как при беге на стадионе догнать себя и укусить за правое ухо... Как же может быть фокус на кнопке, если Вы проверяете изменение в TextBox?! Если срабатывает *TextBox1_Change*, значит, фокус в этом элементе.
Непонятно, зачем эта проверка. И похоже, что вопрос выходит за рамки темы.

При активации формы не нужно фокусировать, достаточно элементу присвоить приоритетный TabIndex. И не в коде, а в параметрах.
 
Понял что ранее неправильно сделал  а сейчас так
По условию активации формы и переноса фокуса на CommandButton3 все  работает
В TextBox1 требуемое значение  и фокус на CommandButton3 - в TextBox1 фокуса нет
Код
Private Sub UserForm_Activate()
  ZVI_SetFormPosition Me  ' <-- Привязка формы к активной ячейке
  TextBox1.Value = "+7(###)###-##-##" 'в TextBox1 светится при активации формы как будет выглядеть тел номер после занесения в активную ячейку
  CommandButton3.SetFocus 'устанавливаем фокус CommandButton3 и снимаем фокус с TextBox1 формы
End Sub


Сейчас при перенесении фокуса в TextBox1 значение TextBox1.Value должно изменится на TextBox1.Value = "+7"
Если далее сделать просто без условий
Код
Private Sub TextBox1_Change()
TextBox1.Value = "+7"
End Sub  

тоже не помогает - сразу при активации формы
TextBox1.Value прыгает в "+7"
 
Цитата
oleg355 написал: По условию активации формы и переноса фокуса на CommandButton3 все  работает
Цитата
vikttur написал: При активации формы не нужно фокусировать, достаточно элементу присвоить приоритетный TabIndex.
В параметрах для CommandButton3 запишите TabIndex=0

Цитата
oleg355 написал: сразу при активации формы TextBox1.Value прыгает в "+7"
Впишите значение +7(###)###-##-## прямо в  TextBox.Text, зачем эти танцы со строками при активации?
 
Код
Private Sub TextBox1_Change()
    If Len(TextBox1.Text) = 10 Then
        TextBox1.Text = "+7" & Format(TextBox1.Text, "(000) 000 00 00")
    End If
    'TextBox1.SetFocus = 'устанавливаем фокус в TextBox1 формы
    'TextBox1.Value = "+7" 'заносим автоматом значение +7 для последующего ввода 10 цифр телефонного номера
    '
End Sub
 
Спасибо всем за советы. Благодарю RAN - ваш код сильно помог в решении проблемы !
Страницы: 1
Наверх