Я пытаюсь динамически генерировать списки (в настоящее время в пользовательской форме) (в зависимости от используемых столбцов исходного листа) и заполнять их записями соответствующих столбцов.
Например:
В столбце A есть следующие записи (по одной на строку): яблоко, банан, персик
В столбце B: синий, зеленый, красный
UserForm должен сгенерировать два ListBox (один для столбца A, один для столбца B) и заполнить их соответствующими записями этих столбцов.
Я пытался перебирать списки, но япродолжайте получать ошибки, так как я не могу понять, как правильно получить синтаксис.Переменная Lastrow
дает мне количество непустых ячеек в столбце и работает правильно (код не показан для лучшего просмотра соответствующего кода.
Я выполнил генерацию Listbox следующим образом:
Dim i As Integer
For i = 1 To 21
Set LstBx = UserForm1.Controls.Add("Forms.Listbox.1", Name:="Listbox" & i)
Next i
Мне кажется, заполнение списков сложнее:
Dim i As Integer
Dim LB As String
Dim cell As Range
For i = 1 To 21
For Each cell In SourceSheet.Range(Cells(1, i), Cells(LastRow, i)).Cells
LB = "Listbox" + i
LB.AddItem cell.Value
Next cell
Следующее объединяет генерацию и популяцию и является реальным кодом, который я пытаюсь исправить:
Dim i As Integer
Dim LB As String
Dim cell As Range
For i = 1 To 21
'Generate
Set LstBx = UserForm1.Controls.Add("Forms.Listbox.1", Name:="Listbox" & i)
'Populate
For Each cell In SourceSheet.Range(Cells(1, i), Cells(LastRow, i)).Cells
LB = "Listbox" + i
'the following is the crucial part I am losing hope on:
'It seems that it is not possible to address Listboxes this way but i cant find another way:
LB.AddItem cell.Value
Next cell
Я ожидаю генерацию и заполнение списков ListBox в соответствии с динамическим количеством столбцов, но я особенно борюсь с добавлением элементов в правильный ListBox во время цикла. В конце концов, моя цель - просто перенести все столбцы исоответствующие записи в списки, касающиеся динамического столбца и диапазона строк.