Запрет копирования и вставки в зависимом раскрывающемся списке в Excel - PullRequest
0 голосов
/ 20 марта 2020

У меня есть xls с зависимыми выпадающими списками - L1 как родитель, L2 как ребенок. Я кодировал некоторые vba, чтобы сбросить выпадающий список L2 при любом изменении выпадающего списка L1 и выбрать правильный выпадающий список на основе значения L1. Это предотвращает ввод ненужных данных из выпадающего списка L2.

Я также хочу остановить копирование-вставку ячейки только в L2. Я мог бы найти отдельный vba для этой необходимости. Но я не могу интегрировать это с исходным сбросом L2 VBA. Он портит исходную функцию и не получает комбинированного поведения. Пожалуйста помоги. Ниже приведен код, который работает для сброса раскрывающегося списка L2, но не может остановить копирование-вставку.

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Target.Column = 8 Then
        If Target.Validation.Type = 3 Then
            Application.EnableEvents = False
            Target.Offset(0, 1).ClearContents
        End If
    End If

'    'Does the validation range still have validation?
'    If HasValidation(Range("DataValidationRange")) Then
'        Exit Sub
'    Else
'        Application.Undo
'        MsgBox "Error ! Pasting not allowed in these cells." & _
'        "Please use the dropdown to enter data.", vbCritical
'    End If

exitHandler:
  Application.EnableEvents = True
  Exit Sub

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...