Проверка ввода числа в текстовое поле на форме VBA

Данный код позволяет выполнять проверку корректности ввода числового значения в текстовое поле (textbox) на форме,
автоматически блокируя ввод запрещенных символов

 

Используется событие KeyPress элемента управления TextBox

Допустимые символы: цифры от 0 до 9, точка (запятая автоматически заменяется на точку), знак «минус» (перед числом)

Предполагается, что текстовое поле имеет имя TextBox_Multiplier

Private Sub TextBox_Multiplier_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    On Error Resume Next
    Select Case KeyAscii
        Case 48 To 57, 8        ' цифры 0 - 9 и <Backspace> (эти символы всегда разрешены)
        Case 44, 46        ' обработка десятичного разделителя (44 - код запятой, 46 - код точки)
            KeyAscii = 46        ' если в поле  введена запятая, то заменим ее на точку
            If InStr(1, Me.TextBox_Multiplier.Text, ".") Then KeyAscii = 0        ' вторую точку нельзя
        Case 45        ' дефис (минус перед числом)
            If InStr(1, Me.TextBox_Multiplier.Text, "-") Then KeyAscii = 0        ' второй минус нельзя
            If Me.TextBox_Multiplier.SelStart Then KeyAscii = 0        ' минус допустим только перед числом
        Case Else
            KeyAscii = 0        ' остальные символы запрещены
    End Select
End Sub

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Огромнейшее спасибо за подсказку!!

Здравствуйте, Тимон
Для этого используются модули класса
Здесь есть пример кода: http://www.excel-vba.ru/chto-umeet-excel/rabota-s-modulyami-klassov/

а как этот макрос применить ко всем текстбоксам формы, и добавить проверку наличия введенных данных в текстбокс. для каждого конкретного прописывать довольно проблематично ввиду их большого количества

БОЛЬШОЕ спасибо

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
   ___           ____    _   _          _ 
/ _ \ ___ | _ \ | \ | | __ __ | |
| (_) | / _ \ | | | | | \| | \ \/ / | |
\__, | | __/ | |_| | | |\ | > < | |
/_/ \___| |____/ |_| \_| /_/\_\ |_|
Введите код, изображенный в стиле ASCII-арт.

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.