我有一个关于 Excel 2010 VBA 的问题。我不知道正确的英语 Excel 术语,因为我使用的是德语 Excel 版本。但我会尽力而为。对此感到抱歉。
在 VBA 中,我为一个单元格(列表选择)设置了数据验证。如果单元格已经设置了一个值,它仍然保留在单元格中,但它可能无法完成数据验证。是否可以通过 VBA 执行刚刚设置的数据验证,如果验证未完成,请清除单元格中的值?
提前致谢。
我有一个关于 Excel 2010 VBA 的问题。我不知道正确的英语 Excel 术语,因为我使用的是德语 Excel 版本。但我会尽力而为。对此感到抱歉。
在 VBA 中,我为一个单元格(列表选择)设置了数据验证。如果单元格已经设置了一个值,它仍然保留在单元格中,但它可能无法完成数据验证。是否可以通过 VBA 执行刚刚设置的数据验证,如果验证未完成,请清除单元格中的值?
提前致谢。
即使显示一些代码也有助于跨越语言障碍并帮助我们回答这个问题;但是,我假设您询问是否可以使用 VBA 代码评估验证本身。你可以。
Validation 对象有一个可以评估的.Value 属性:
If Not validation.Value Then
cell.ClearContents
End If
试试这个:
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