Страницы: 1
RSS
VBA Проверка на ввод определенных значений в Textbox.
 
Здравствуйте, дорогие форумчане.
Как ограничить пользователю ввод значения в Textbox, за исключением определенных значений, например: 64,128,160.
 
Сделать ComBobox с этими значениями  :D
"Все гениальное просто, а все простое гениально!!!"
 
К сожалению, этот вариант путь к косяку. На самом деле в последствие значений будет больше, при выборе из списка можно ошибиться так как выпадающий список будет большим.
 
Либо каждое введенное значение проверять на соответствие заданным значениям (типа как при проверке пароля делается)
Кому решение нужно - тот пример и рисует.
 
Цитата
Nordheim написал:
Сделать ComBobox с этими значениями  
Кстати в Combobox можно вводить значения не только из списка, проверял. Или нужно дополнительные ограничения писать.  
 
Цитата
DopplerEffect написал:
в Combobox можно вводить значения не только из списка
Это смотря как задать -
Код
ComboBox1.Style = fmStyleDropDownList
 
Обработка события выхода из TextBox
Код
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim aVal()
Dim lTextVal As Long, j As Long
    aVal = Array(64, 128, 160)
    
    With TextBox1
        If .Text = "" Then Exit Sub
        lTextVal = Val(.Text)

        For j = 0 To UBound(aVal)
            If aVal(j) = lTextVal Then Exit For
        Next j
        
        If j > UBound(aVal) Then
            MsgBox "НиззЯ!", 16, "А по рукам линейкой?"
            .SelStart = 0: .SelLength = Len(.Text)
            Cancel = True
        End If
    End With
End Sub

Но вариант с ComboBox лучше. Список можно брать из диапазона на листе.
 
Или такой вариант
Код
Public dic As Object

Private Sub UserForm_Initialize()
arr = Array(2, 4, 8, 16, 32, 64, 128, 256)  'массив допустимых значений
Set dic = CreateObject("Scripting.Dictionary")
For I = LBound(arr) To UBound(arr)
    iTemp = dic(arr(I))
Next
End Sub

Private Sub CommandButton1_Click()
    If Not dic.Exists(CDbl(Me.TextBox1)) Then
        MsgBox "Недопустимое значение!"
        Me.TextBox1 = Empty
    Else
        Range("A1") = CDbl(Me.TextBox1)
    End If
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Спасибо всем за предложенные варианты.
Изменено: Лина - 26.02.2018 13:03:12
 
А если я хочу задать маску для этого текстбокса? или это оффтоп? Вообще вопрос по теме например хочу проверить что это поле содержит номер телефона формата +7(###) ###-##-## или адрес Э/П типа *@*.*
Изменено: Семен Фадеев - 02.11.2021 12:18:20
 
Цитата
Семен Фадеев написал:
А если я хочу
Не держите в себе, делайте.
 
Цитата
RAN написал:
Не держите в себе, делайте.
Я могу просто сравнить такой строкой? или так не работает?
Код
If txtManMail.Value <> *@*.* Then

Или

Код
If txtMngrPhn.Value <> +7(###) ###-##-## Then

Изменено: Семен Фадеев - 02.11.2021 12:25:35
 
Цитата
Семен Фадеев: If txtManMail.Value <> *@*.* Then
If Not txtManMail.Value Like "*@*.*" Then
Цитата
Семен Фадеев: If txtMngrPhn.Value <> +7(###) ###-##-## Then
If Not txtMngrPhn.Value Like "+7(###) ###-##-##" Then
Изменено: Jack Famous - 02.11.2021 12:28:53
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Ну ведь точно же) Like только про него читал)
Страницы: 1
Наверх