Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Inputbox. Проверка введенных данных.

23K
19 февраля 2008 года
ttat01
17 / / 02.10.2007
Вводится через Inputbox имя, фамилия, как проверить, что пользователь не вводит цифры и спец.символы.?
251
19 февраля 2008 года
SkyMаn
1.7K / / 31.07.2007
Использовать процедуру-обработчик нажатия клавиш в данном поле:

Private Sub txtName_KeyPress(keyascii As Integer)
If val(chr(keyascii))>=0 and val(chr(keyascii))<=9 Then keyascii=0
End Sub

Можно упростить, не используя функций val/chr, но не помню кодов клавиш.
33K
21 февраля 2008 года
Glukazu
12 / / 27.01.2008
я никогда не проверял, что вводится в поле, а просто ограничивал символы на ввод...
Private Sub txtnazvanie3_KeyPress(KeyAscii As Integer)
strDigits = "йцукенгшщзхъфывапролджэячсмитьбю. "
If InStr(1, strDigits, Chr(KeyAscii), vbTextCompare) = 0 Then
If KeyAscii <> 8 Then KeyAscii = 0
End If
End Sub
но сдесь идет речь не о textbox, а о Inputbox
я что то подобное делал когда то, посмотрю мож найду
251
21 февраля 2008 года
SkyMаn
1.7K / / 31.07.2007
Хм, сорри, не досмотрел. А через инпутбокс - никак. Разве что заставлять пользователя перебирать после нажатия Enter. Ну или в руки тебе API-шный GetWindowText/SetWindowText
18K
21 февраля 2008 года
pavel55
79 / / 14.05.2007
А если так?

Код:
Sub RussianOnly()
Dim iName As Variant, i As Long
    iName = Application.InputBox("Введите Ваше имя:", "Имя", , , , , , 2)
    If iName = "" Then Exit Sub 'если ничего не ввели
    If iName = False Then Exit Sub 'если нажали Cancel
    For i = 1 To Len(iName)
        If Asc(Mid(iName, i, 1)) <> 32 Then 'если не пробел
            If Asc(Mid(iName, i, 1)) < 192 Or Asc(Mid(iName, i, 1)) > 255 Then 'если нерусские буквы
                MsgBox "Имя должно содержать только русские буквы!", vbExclamation, ""
                Exit Sub
            End If
        End If
    Next i
    MsgBox "Вы ввели: " & iName, vbInformation, ""
End Sub
нет!
23K
21 февраля 2008 года
ttat01
17 / / 02.10.2007
Спасибо за помощь pavel55!)
Но еще один вопос остался, как пользователь может вводить только латинские буквы?
(смотрел в ASCII таблицу, нужно два диапазона включить с большими и мальнькими лат.симв., но как это сделать...)
18K
21 февраля 2008 года
pavel55
79 / / 14.05.2007
Код любой буквы можно узнать так
1) откройте Excel
2) в ячейку А1 введите букву A (английский алфавит)
3) в ячейке B1 введите формулу =КОДСИМВ(A1) - вы получите код 65
4) введите z и получите 122

таким образом наша строка будет

 
Код:
If Asc(Mid(IName, i, 1)) < 65 Or Asc(Mid(IName, i, 1)) > 122 Then
23K
22 февраля 2008 года
ttat01
17 / / 02.10.2007
А что на счет [91,96] символов ASCII
http://en.wikipedia.org/wiki/ASCII
18K
22 февраля 2008 года
pavel55
79 / / 14.05.2007
Код:
Sub EnglishOnly()
Dim iName As Variant, i As Long, OK As Long
    iName = Application.InputBox("Введите Ваше имя:", "Имя", , , , , , 2)
    If iName = "" Then Exit Sub
    If iName = False Then Exit Sub
    For i = 1 To Len(iName)
        If Asc(Mid(iName, i, 1)) >= 65 And Asc(Mid(iName, i, 1)) <= 90 Or _
            Asc(Mid(iName, i, 1)) >= 97 And Asc(Mid(iName, i, 1)) <= 122 Or _
                Asc(Mid(iName, i, 1)) = 32 Then
            OK = OK + 1
        End If
    Next i
    If OK = Len(iName) Then
        MsgBox "Всё ОК!", vbInformation, ""
    Else
        MsgBox "Имя должно содержать только английские буквы!", vbExclamation, ""
    End If
End Sub
23K
23 февраля 2008 года
ttat01
17 / / 02.10.2007
Классный ответ, все четко и понятно. Спасибо.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог