У меня есть 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