Есть форма, в которой есть ListBox. Есть возможность выбора нескольких пунктов в ListBox.
Как сделать так, чтобы в Excel была выгрузка выбранных в ListBox пунктов?
Как выгрузить выделенные элементы в ячейку В2 я знаю. Но мне необходимо, чтобы каждый выделенный элемент в ListBox выгружался в Excel в отдельную ячейку.
Например, в ListBox выделил филиал №1, №2 и №5. На форме нажал на кнопу ОК.
После чего хотелось бы, что в Excel филиал №1 выгрузился бы в ячейку А1, филиал №2 выгрузился бы в ячейку А2, филиал №5 выгрузился бы в ячейку А3.
Код в форме выглядит следующим образом:
Код
Private Sub UserForm_Initialize()
' Загрузка филиалов в форму.
Sheets("Справочник").Select
Dim Диапазон As Range
Set Диапазон = Range("A2").CurrentRegion
ListBox1.RowSource = Диапазон.Address
ListBox1.MultiSelect = fmMultiSelectMulti
End Sub
Private Sub CommandButton1_Click()
' Выгрузка филиалов в Excel.
Dim n As Long
Dim i As Integer
Dim Список As String
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
Список = Список + ListBox1.List(i)
End If
Next
Range("B1").Value = Список
End Sub
Код
Private Sub CommandButton1_Click()
' Выгрузка филиалов в Excel.
Dim n As Long
Dim i As Integer
Dim Список() As String, r As Long
' Создание в массиве ячеек. Ячеек создаём максимально возможное кол-во,
' т.к. заранее не известно, сколько юзер выбрал пунктов.
' И создаём один столбец, чтобы можно было вставить в эксель одним действием.
ReDim Список(1 To Me.ListBox1.ListCount, 1 To 1)
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
' Переход на следующую строку в массиве 'Список'.
r = r + 1
' Запись пункты в массив.
Список(r, 1) = ListBox1.List(i)
End If
Next
' Вставка данных на эксель-лист.
Range("B1").Resize(r).Value = Список()
End Sub