Excel vba:强制数据验证和最大字段长度

时间:2010-12-20 04:31:03

标签: validation vba excel-vba excel

我想对给定范围进行一些数据验证(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 个答案:

答案 0 :(得分:1)

我认为你在寻找:

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。您使用的示例是整数,但您希望检查文本长度。

答案 1 :(得分:0)

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。

HTH!

修改

您可以阅读使用验证here完成的方法。但我认为它对于生产代码来说还不够健壮。无法以一致的方式验证没有VBA的空单元格AFAIK。