1

我有一个关于 Excel 2010 VBA 的问题。我不知道正确的英语 Excel 术语,因为我使用的是德语 Excel 版本。但我会尽力而为。对此感到抱歉。

在 VBA 中,我为一个单元格(列表选择)设置了数据验证。如果单元格已经设置了一个值,它仍然保留在单元格中,但它可能无法完成数据验证。是否可以通过 VBA 执行刚刚设置的数据验证,如果验证未完成,请清除单元格中的值?

提前致谢。

4

2 回答 2

1

即使显示一些代码也有助于跨越语言障碍并帮助我们回答这个问题;但是,我假设您询问是否可以使用 VBA 代码评估验证本身。你可以。

Validation 对象有一个可以评估的.Value 属性:

If Not validation.Value Then
    cell.ClearContents
End If
于 2013-09-18T14:13:43.203 回答
0

试试这个:

Sub PlaceDV()
    Dim r As Range
    Dim v As String
    sValid = "alpha,beta,gamma"
    Set r = ActiveCell
    v = CStr(r.Value)
    If InStr(1, sValid, v) = 0 Then
        r.ClearContents
    End If
    With r.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=sValid
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub
于 2013-09-18T14:33:35.920 回答