【问题标题】:Excel vba: data validation mandatory and maximum field lengthExcel vba:强制数据验证和最大字段长度
【发布时间】:2017-12-09 17:35:11
【问题描述】:

我想对给定范围 ( 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

【问题讨论】:

    标签: validation vba excel


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

    【讨论】:

      【解决方案2】:
      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 完成的方法。但我认为它对于生产代码来说不够健壮。 AFAIK 无法以一致的方式验证没有 VBA 的空单元格。

      【讨论】:

      • @Mohamed 花点时间在你的问题中写下你的要求。
      • 检查空单元格是否可以不使用 IsEmpty?即 If(IsEmpty(a.value) 或 Len(a) > 35) Then...
      • @Remnant 是的,但在验证公式中使用时无法按预期工作
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多