Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Обработка поля TextBox в Userform - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Обработка поля TextBox в Userform (Макросы/Sub)
Обработка поля TextBox в Userform
t330 Дата: Среда, 24.04.2019, 03:48 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 147
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Добрый день, всем!

В Userform есть Текстовый бокс , в который нужно и можно вносить только числовые значения.
Если же вводится , что другое (пробел или буквы), то должно выскакивать сообщение с требование м ввести число и подставляться значение по -умолчанию.

Попытался решить задачу через процедуру TextBox1_Change() (см вложенный файл), но она работает очень неудобно.

Как только я стираю число по-умолчанию (в данном случае 10), чтобы ввести другео число ,сразу срабатывает MsgBox "Введите число" и я не успеваю ввести число.
Чтобы ввести число, приходится не полностью удалять значение по-умолчанию, а корректировать его добавлением цифр.

Коллеги, подскажите пожалуйста, как сделать так, чтобы при удалении числа по-умолчанию из TextBox1 можно было бы ввести новое число , а не корректировать это значение по-умолчанию?

[vba]
Код


Private Sub TextBox1_Change()
    If IsNumeric(TextBox1.Value) Then
    Else
        MsgBox "Введите число"
        TextBox1.Value = 10
    End If
End Sub

Private Sub UserForm_Initialize()
       TextBox1.Value = 10
End Sub

[/vba]
К сообщению приложен файл: test.xlsm (22.8 Kb)
 
Ответить
СообщениеДобрый день, всем!

В Userform есть Текстовый бокс , в который нужно и можно вносить только числовые значения.
Если же вводится , что другое (пробел или буквы), то должно выскакивать сообщение с требование м ввести число и подставляться значение по -умолчанию.

Попытался решить задачу через процедуру TextBox1_Change() (см вложенный файл), но она работает очень неудобно.

Как только я стираю число по-умолчанию (в данном случае 10), чтобы ввести другео число ,сразу срабатывает MsgBox "Введите число" и я не успеваю ввести число.
Чтобы ввести число, приходится не полностью удалять значение по-умолчанию, а корректировать его добавлением цифр.

Коллеги, подскажите пожалуйста, как сделать так, чтобы при удалении числа по-умолчанию из TextBox1 можно было бы ввести новое число , а не корректировать это значение по-умолчанию?

[vba]
Код


Private Sub TextBox1_Change()
    If IsNumeric(TextBox1.Value) Then
    Else
        MsgBox "Введите число"
        TextBox1.Value = 10
    End If
End Sub

Private Sub UserForm_Initialize()
       TextBox1.Value = 10
End Sub

[/vba]

Автор - t330
Дата добавления - 24.04.2019 в 03:48
K-SerJC Дата: Среда, 24.04.2019, 07:43 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
добавьте условие
[vba]
Код
If TextBox1.Value="" then exit sub
If IsNumeric(TextBox1.Value) Then
[/vba]


Благими намерениями выстелена дорога в АД.
 
Ответить
Сообщениедобавьте условие
[vba]
Код
If TextBox1.Value="" then exit sub
If IsNumeric(TextBox1.Value) Then
[/vba]

Автор - K-SerJC
Дата добавления - 24.04.2019 в 07:43
RAN Дата: Среда, 24.04.2019, 08:23 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеЧукча не читатель, чукча писатель

Автор - RAN
Дата добавления - 24.04.2019 в 08:23
t330 Дата: Среда, 24.04.2019, 13:56 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 147
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
добавьте условие

Это не подходит, пробовал.
Так как, тогда можно просто оставить пустую строку в ТекстБоксе и нажать кнопку далее и процедура это схавает.
А мне надо , чтобы в ТекстБоксе после всех манипуляций и исправлений пользователем, всегда оставалось число, а не пустая строка или буквы.
 
Ответить
Сообщение
добавьте условие

Это не подходит, пробовал.
Так как, тогда можно просто оставить пустую строку в ТекстБоксе и нажать кнопку далее и процедура это схавает.
А мне надо , чтобы в ТекстБоксе после всех манипуляций и исправлений пользователем, всегда оставалось число, а не пустая строка или буквы.

Автор - t330
Дата добавления - 24.04.2019 в 13:56
K-SerJC Дата: Среда, 24.04.2019, 14:48 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
нажать кнопку далее

в процедуру кнопки поставьте проверку, и вывод сообщения и откат
либо обрабатывать нажатия клавиш по событию
[vba]
Код
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

End Sub
[/vba]


Благими намерениями выстелена дорога в АД.
 
Ответить
Сообщение
нажать кнопку далее

в процедуру кнопки поставьте проверку, и вывод сообщения и откат
либо обрабатывать нажатия клавиш по событию
[vba]
Код
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

End Sub
[/vba]

Автор - K-SerJC
Дата добавления - 24.04.2019 в 14:48
_Boroda_ Дата: Среда, 24.04.2019, 15:53 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Пример на закрытие (скрытие) кнопкой. Переход аналогично. И крестик нужно ловить
[vba]
Код
Private Sub CommandButton1_Click()
    If Not IsNumeric(TextBox1.Value) Then
        TextBox1.SetFocus
    Else
        UserForm.Hide
    End If
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If Not IsNumeric(TextBox1.Value) Then Cancel = 1
    TextBox1.SetFocus
End Sub
[/vba]
К сообщению приложен файл: test-4-1.xlsm (14.9 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеПример на закрытие (скрытие) кнопкой. Переход аналогично. И крестик нужно ловить
[vba]
Код
Private Sub CommandButton1_Click()
    If Not IsNumeric(TextBox1.Value) Then
        TextBox1.SetFocus
    Else
        UserForm.Hide
    End If
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If Not IsNumeric(TextBox1.Value) Then Cancel = 1
    TextBox1.SetFocus
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 24.04.2019 в 15:53
t330 Дата: Пятница, 26.04.2019, 18:06 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 147
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Всем спасибо!
С вашей помощью разобрался.
 
Ответить
СообщениеВсем спасибо!
С вашей помощью разобрался.

Автор - t330
Дата добавления - 26.04.2019 в 18:06
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Обработка поля TextBox в Userform (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!