Excel vba: проверка данных обязательна и максимальная длина поля - PullRequest
0 голосов
/ 20 декабря 2010

Я хочу получить некоторые проверки данных для данного диапазона (D2: D65536).

Критерии проверки должны проверять, чтобы ячейки в диапазоне не были пустыми, а длина текста не должна превышать 35.

Как реализовать эту проверку с использованием vba?

Я пробовал:

'    With Range("D2:D65536").Validation
'        .Delete
'        .Add Type:=xlValidateTextLength, _
'            AlertStyle:=xlValidAlertInformation, _
'            Minimum:=2, Maximum:="35"
'        .IgnoreBlank = True
'        .ErrorTitle = "Validation Error"
'        .ErrorMessage = "X mandatory and length should be less than or equal to 35"
'        .ShowError = True
'    End With

Ответы [ 2 ]

1 голос
/ 20 декабря 2010

Я думаю, что вы ищете:

Sub Validate()
    With Range("D2:D65536").Validation

        .Delete
        .Add Type:=xlValidateTextLength, _
            AlertStyle:=xlValidAlertInformation, _
            Operator:=xlBetween, _
            Formula1:="2", _
            Formula2:="35"
        .IgnoreBlank = True
        .ErrorTitle = "Validation Error"
        .ErrorMessage = "X mandatory and length should be less than or equal to 35"
        .ShowError = True
    End With
End Sub

Справка по F1 менее запутанна, чем при поиске, но в любом случае взгляните на метод Add: http://msdn.microsoft.com/en-us/library/aa221688(v=office.11).aspx. В примере вы использовали целые числа, но вы хотите проверить длину текста. 1006 *

0 голосов
/ 20 декабря 2010
Function checkrange()
Dim r, a As Range

'Set r = Range("D2:D65536")
Set r = Range("a1:a2")
    checkrange = False
    For Each a In r
       If (a = "" Or Len(a) > 35) Then Exit Function
    Next a
    checkrange = True
End Function

Sub a()
MsgBox (checkrange())
End Sub  

Вернуть True, если проверка прошла успешно, иначе False.

НТН!

Редактировать

Вы можете прочитать подход, сделанный с помощью Validation здесь . Но я думаю, что он недостаточно надежен для производственного кода. Проверка пустых ячеек без VBA невозможна последовательным способом AFAIK.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...