Хорошо, я использовал этот код для списка:
Dim lngItem As Long
Const strSep = ", " 'delimiter
Private Sub UserForm_Initialize()
With ListBox1
.RowSource = "=Sheet1!A2:A12"
For lngItem = 0 To ListBox1.ListCount - 1
.Selected(lngItem) = InStr(1, strSep & ActiveCell.Value & strSep, strSep & .List(lngItem, 0) & strSep)
Next lngItem
End With
End Sub
Private Sub CommandButton1_Click()
Dim strItems As String
With ListBox1
For lngItem = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(lngItem) Then
strItems = strItems & strSep & ListBox1.List(lngItem, 0)
End If
Next lngItem
End With
With ActiveCell
.NumberFormat = "@"
.Value = Replace(strItems, strSep, "", 1, 1)
End With
Unload Me
End Sub
и этот для выбора столбцов:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column <> 3 Or Target.Row = 1 Then Exit Sub
UserForm1.Show
Cancel = True
End Sub
Это прекрасно работает, но я хотел бы изменить одну вещь.
В данный момент список появляется после двойного щелчка по ячейке, есть ли возможность сделать его одним щелчком мыши? Также его можно изменить, чтобы список всегда отображался под выбранной ячейкой?