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