в предыдущем коде появляется ошибка в строке:
Set Rng = Me.ListObjects(1).DataBodyRange.Columns(1).Resize(, 2)
и объясните пожалуйста, правильно ли я понимаю что при таком методе, столбцы будут друг за другом или же можно, что бы они были через какое то количество столбцов?
If Target.Count > 1 Then Exit Sub
Set Rng = Me.ListObjects(1).DataBodyRange.Columns(1).Resize(, 2)
Rem Me.ListObjects(1).DataBodyRange - диапазон "УмногоСписка" (без шапки).
Rem замените 2 в .Resize(, 2) на необходимое число столбцов
Select Case False
Case Intersect(Target, Rng.Columns(1)) Is Nothing
If Target <> "..Добавить нового.." Then Exit Sub
sNewVal = InputBox("Введите наименование нового КонтрАгента, которое следует добавить", "Ввод нового КонтрАгента")
If sNewVal = "" Then Target = sNewVal: Exit Sub
Set Rng = Sheets("КонтрАгенты").Range("СписокКонтрАгенты")
Case Intersect(Target, Rng.Columns(2)) Is Nothing
If Target <> "..Добавить нового.." Then Exit Sub
sNewVal = InputBox("Введите наименование нового КонтрАгента, которое следует добавить", "Ввод нового КонтрАгента")
If sNewVal = "" Then Target = sNewVal: Exit Sub
Set Rng = Sheets("ФИОКонтрАгенты").Range("СписокФИОКонтрАгенты")
' Case Intersect(Target, Rng.Columns(3)) Is Nothing
' .......
' Case Intersect(Target, Rng.Columns(4)) Is Nothing
' .......
' ..............
Case Else
Exit Sub
End Select
With Rng
If .Find(sNewVal, , xlValues, xlWhole) Is Nothing Then
.Cells(2).Insert: .Cells(2, 1) = sNewVal: .Resize(.Rows.Count - 1).Sort .Cells(1, 1)
Else
MsgBox "Это уже присутствует в списке!", vbInformation, "Дубликат"
End If
End With
Target = sNewVal
End Sub