Dim PreviousValue As String
' Шаг 1: Запоминаем текущее значение ячейки при клике на неё
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count = 1 Then
PreviousValue = Target.Value
End If
End Sub
' Шаг 2: Добавляем новое значение к старому при выборе из списка
Private Sub Worksheet_Change(ByVal Target As Range)
' Укажите нужный диапазон ячеек (например, "A1:A100" или "B2")
If Not Intersect(Target, Range("A1:A100")) Is Nothing Then
If Target.Cells.Count > 1 Then Exit Sub
' Если ячейку очистили (нажали Delete), сбрасываем значение
If Target.Value = "" Then
PreviousValue = ""
Exit Sub
End If
On Error GoTo CleanExit
Application.EnableEvents = False
' Если ячейка уже содержала текст, объединяем значения
If PreviousValue <> "" And PreviousValue <> Target.Value Then
Target.Value = PreviousValue & ", " & Target.Value
End If
' Обновляем сохраненное значение
PreviousValue = Target.Value
CleanExit:
Application.EnableEvents = True
End If
End Sub