我想知道是否有一种干净的方法来评估单元内数据验证。它可以是长度检查或下拉列表等。
使用下面的代码,我可以很容易地添加数据验证规则,如果单元格A1中的条目超过5个字符,则进行验证,但有没有方法从VBA内部对其进行评估?
With Cells(1,1).DataBodyRange.Validation
.Delete
.Add Type:=xlValidateTextLength, AlertStyle:=xlValidAlertStop, _
Operator:=xlLess, Formula1:="6"
.ErrorTitle = "Too Many Characters"
.ErrorMessage = "The maximum allowed number of characters For this field is 5"
.ShowError = TRUE
End With
如果您不想使用数据验证,而更喜欢用VBA重新发明轮子,可以使用Worksheet_Change事件。
让代码评估目标单元格,并确定它是否符合您的条件。如果没有,请清除目标单元格并显示一条消息。
这种方法将有效地消除用户使用"撤消"的能力,因为VBA将在整个工作表上的每个数据输入后运行,并将清除"撤消"堆栈。如果您想保留最终用户的可用性,您可能需要继续使用内置的数据验证。