Я создал пользовательскую форму с парой списков. В Listbox1 есть все элементы, пользователь может выбрать несколько значений, а затем перейти в Listbox2. как только они появятся в listbox2, мне нужно, чтобы они заполнили некоторые ячейки. С 1 элементом списка на ячейку.
Я мучаюсь, пытаясь понять, как это сделать. Пока все, что у меня есть, это:
Private Sub CommandButton1_Click()
Dim tmpMsg As String
Dim t As Long
tmpMsg = "Selected categories:"
For t = 1 To ListBox2.ListCount
tmpMsg = tmpMsg & vbNewLine & ListBox2.List(t - 1)
Next
Worksheets("Specialist Prices").Activate
Range("a1").Select
ActiveCell.Value = tmpMsg
End Sub
Это заполнит ячейку A1 всем набором элементов списка. но я не знаю, как поместить 1 значение в a1, затем перейти вниз и поместить следующее в A2 и так далее, пока не будут учтены все элементы.
Любая помощь будет оценена по достоинству.


Прямо сейчас вы создаете одну строку. В нем есть разрывы строк, но это все еще один текст. Если вы не используете tmpmsg для чего-то другого, вы можете использовать цикл for для заполнения листа.
For t = 1 To ListBox2.ListCount
Thisworkbook.sheets("Specialist Prices").Range("A" & t).value = ListBox2.List(t - 1)
Next
Вы даже можете сделать это быстрее, добавив массив ко всему диапазону. ListBox2.List — это массив значений, и вы можете вставить этот массив в диапазон ячеек:
ThisWorkbook.sheets("Specialist Prices").Cells(1,1).Resize(ListBox2.ListCount,1) = ListBox2.List
Метод Resize гарантирует, что диапазон содержит столько же ячеек, сколько элементов в ListBox2. Он изменяет размер диапазона от 1 ячейки до диапазона ListBox2.ListCount количества строк и 1 столбца.