Как бы я изменил приведенный ниже код для учета нескольких именованных диапазонов?

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 ответ1

0

Первоначальная публикация этого кода в Superuser ответила на этот вопрос: выделите все ячейки с проверкой данных и задайте именованный диапазон для группы. В этом случае DataValidationRange. Это будет работать, даже если ячейки являются частью других именованных диапазонов.

Однако тестирование этого кода с книгой Excel 2010 привело к сбою Excel в моей системе. Вы хотите сохранить ваш файл до тестирования.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .