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
Inputbox. Проверка введенных данных.
Вводится через Inputbox имя, фамилия, как проверить, что пользователь не вводит цифры и спец.символы.?
Private Sub txtName_KeyPress(keyascii As Integer)
If val(chr(keyascii))>=0 and val(chr(keyascii))<=9 Then keyascii=0
End Sub
Можно упростить, не используя функций val/chr, но не помню кодов клавиш.
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
я что то подобное делал когда то, посмотрю мож найду
Хм, сорри, не досмотрел. А через инпутбокс - никак. Разве что заставлять пользователя перебирать после нажатия Enter. Ну или в руки тебе API-шный GetWindowText/SetWindowText
А если так?
Но еще один вопос остался, как пользователь может вводить только латинские буквы?
(смотрел в ASCII таблицу, нужно два диапазона включить с большими и мальнькими лат.симв., но как это сделать...)
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
А что на счет [91,96] символов ASCII
Код:
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
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
Классный ответ, все четко и понятно. Спасибо.