2014-11-14 4 views
0

Я пытаюсь проверить, используя vba, содержит ли ячейка не менее 7 и не более 10 символов. Я также хочу проверить, что в ячейку помещаются только числа и никакие буквы, за исключением случаев, когда символы «GB» префикса содержат ряд чисел.Подтвердить ячейку в excel с помощью vba?

Так что, если я типа

«12345678'in мою ячейку, то это правильный вход, и я не получаю сообщение об ошибке, и если я типа в„GB1234567“, то это тоже действительная запись.

Однако, если я напечатал «12343543GB» это не действует, или если я напечатал какие-либо другие буквы, как «HGDFEGEFS» это не действует

Кто-нибудь знает, как я мог настроить свой код, чтобы получить эту работу? благодаря

If Len(Range("D21").Value) < 7 Or Not IsNumeric(Range("D21").Value) Then 
Dim AckTime2 As Integer, InfoBox2 As Object 
    Set InfoBox2 = CreateObject("WScript.Shell") 
    'Set the message box to close after 10 seconds 
    AckTime2 = 1.5 
    Select Case InfoBox2.Popup("Ooops!" & vbNewLine & vbNewLine & "Please go back and check the VAT number.", _ 
    AckTime2, "Cannot Submit the Form!", 0) 
     Case 1, -1 
    End Select 

Else 

MsgBox "No Error" 
End If 
+0

Почему с помощью оболочки в VBA для этой цели? – ZAT

ответ

0

Вы могли бы попробовать это так:

Sub chekk() 
Set rngg = Range("D21") 
Valu = rngg.Value 
numPart = Mid(Valu, 3) 

If (IsNumeric(numPart) And Mid(Valu, 1, 2) = "GB") Or IsNumeric(Valu) Then 

    If Len(Valu) >= 7 And Len(Valu) < 10 Then 
    MsgBox "valid" 
    Else: MsgBox "invalid" 
    End If 

Else: MsgBox "invalid" 
End If 

End Sub 
1

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

Я бы предпочел сделать валидацию на листе. Если A1 содержит текст, то эта формула

=IF(AND(LEN(A1)>=7, LEN(A1)<=10),IF(ISNUMBER(A1),TRUE,IF(LEFT(A1,2)="GB",ISNUMBER(MID(A1,3,10)),FALSE))) 

делает валидацию для вас. (Это немного громоздко, но вы всегда можете разделить его на более чем одну ячейку.) Затем вы можете использовать эту ячейку совместно с проверкой ячеек Excel и вообще избегать VBA.

Другим вариантом является использование VBA для проверки правильного выражения . Но, к сожалению, это не встроено в VBA.

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