2014-01-15 3 views
0

Я пытаюсь запустить марку, которая проверяет, что пользователи явили, и не забыли. Мне сложно с одной клеткой. Я хочу, чтобы пользователь ограничивался только вводом двух букв, и я хочу, чтобы он проверял, чтобы в этой ячейке не было введено никаких чисел, иначе вызовите сообщение об ошибке и выйдите из под. Любая помощь очень ценится!Подтвердить запись пользователя

If Worksheets("New PN").Range("B12").Value = "" Then 
MsgBox "Date cannot be left empty.", vbOKOnly + vbExclamation, "Entry Error" 
Exit Sub 
End If 

ответ

1

Попробуйте ЭТОТ!

cellContent = Worksheets("New PN").Range("B12").Value 
leftCC = Left(cellContent, 1) 
rightCC = Right(cellContent, 1) 
If Len(cellContent) <> 2 Then 

     MsgBox "There needs to be 2 characters." 
     Exit Sub 

ElseIf (Asc(leftCC) < 65 Or Asc(leftCC) > 122 _ 
     Or (Asc(leftCC) > 90 And Asc(leftCC) < 97)) _ 
    Or _ 
     (Asc(rightCC) < 65 Or Asc(rightCC) > 122 _ 
     Or (Asc(rightCC) > 90 And Asc(rightCC) < 97)) Then 

     MsgBox "Both characters can only be letters." 
     Exit Sub 

End If 

Может быть большим и страшным, но это будет получить работу на 100%.

EDIT: Формула Asc(char) возвращает номер ascii для предоставленного символа. Внешние пределы a-z и A-Z равны 65 и 122, однако некоторые несимволы включены в середину (а именно [, \,], ^, _, `). Отсюда ужасное, если.

+0

Hello BernardSaucier благодарит вас за комментарий. У меня все еще есть проблема, когда я все еще могу ввести число и письмо, и макрос будет работать. Например, я могу ввести «C1», и он будет работать. Есть ли у вас какие-либо предложения о том, как это исправить. Благодаря! –

+0

Обновленный ответ, попробуйте! –

+0

Спасибо, что сделал трюк, ваш лучший! –

2

Попробуйте это:

my_string = Worksheets("New PN").Range("B12").Value 

If Len(my_string) = 2 And Left(my_string, 1) Like "[A-Za-z]" _ 
    And Right(my_string, 1) Like "[A-Za-z]" Then 
    '~~execute what you want here 
Else 
    MsgBox "Invalid input" & vbNewLine & "Enter 2 LETTERS only" 
End If 

Надеется, что это помогает.

+1

Выглядит отлично, но только это: не число не означает буквы. –

+0

hehe editted for @BernardSaucier – L42

+0

Ничего себе, когда я увидел вашу коррекцию, я задавался вопросом, будет ли ваше регулярное выражение работать (не думал, что ему нужна запятая там), поэтому я попробовал это, и это не было (ужасная копия-вставка; пропустил первую строку), в то время как это действительно делает. Поэтому я пошел вперед и закончил набирать свой ответ xD. +1 за избиение меня до удара. Дважды. –

Смежные вопросы