VBA根据单元格条目的第一个字符创建验证

时间:2014-02-28 20:49:57

标签: vba validation excel-vba wildcard excel

您好我正在尝试通过VBA在Excel中创建单元格验证。我试图通过使用外卡来完成此操作,以便该单元格中的验证将基于数据条目中的第一个字符。

以下是我正在使用的代码。

Dim wild1 as string
wild1 = Cells(11, 7) Like "b*"

With Cells(11, 7).Validation
    .Delete
    .Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Formula1:=wild1
End With

使用上面的代码,每当我尝试在Cell(11,7)中输入内容时,我都会收到验证错误。如果该单元格中数据条目中的第一个字符以b开头,我将如何更改此值以使数据条目有效?

谢谢!

1 个答案:

答案 0 :(得分:0)

这是基于 simoco的注释.........此事件代码位于工作表代码区域中:

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim ch As String
    If Intersect(Target, Cells(11, 7)) Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    ch = Left(Target, 1)
    dq = Chr(34)
    With Target.Validation
        .Delete
        .Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=left(A1,1)=" & dq & ch & dq
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
    Application.EnableEvents = False
End Sub

并假设 G7 启动时未进行验证。输入值后,将在验证中使用第一个字母。