Excel - 如何防止用户在 Excel 中粘贴超出数据验证范围的内容

Excel - 如何防止用户在 Excel 中粘贴超出数据验证范围的内容

我该如何修改下面的代码来解释多个命名范围?

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 崩溃。您需要在测试之前保存文件。

相关内容