我该如何修改下面的代码来解释多个命名范围?
Private Sub Worksheet_Change(ByVal Target As Range)
'Does the validation range still have validation?
If HasValidation(Range("DataValidationRange")) Then
Exit Sub
Else
Application.Undo
MsgBox "Error: You cannot paste data into these cells." & _
"Please use the drop-down to enter data instead.", vbCritical
End If
End Sub
Private Function HasValidation(r) As Boolean
'Returns True if every cell in Range r uses Data Validation
On Error Resume Next
x = r.Validation.Type
If Err.Number = 0 Then HasValidation = True Else HasValidation = False
End Function
答案1
这此代码最初发布在 Superuser 上回答了这个问题:选择所有具有数据验证的单元格,并为该组提供一个命名范围。在本例中为 DataValidationRange。即使单元格是其他命名范围的一部分,这也将起作用。
但是,使用 Excel 2010 工作簿测试此代码导致我的系统上的 Excel 崩溃。您需要在测试之前保存文件。