Для каждого или именованного диапазона для заполнения ListBox - PullRequest
0 голосов
/ 23 мая 2018

Все, что я пытаюсь заполнить список с циклом For Each, который перебирает строки.Цикл for проходит через элементы в именованном диапазоне (ProgramID).

Текущий код, который я использую:

If Len(ProjectInformation.Range("H2").Value) = 7 Then

    Dim Lr As Long
    Lr = Range("H1048576").End(xlUp).Row
    For Each C In Range("H2:H" & Lr)
        With Program_ListBox
            .AddItem C.Value
        End With
    Next C

End If

Боюсь, что это очень простой вопрос, однако после исследованияя просто не могу заставить эту простую задачу работать.

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Range("H2:H" & Lr) ссылается на ячейки ActiveSheet.Вы всегда должны полностью квалифицировать свои ссылки.

With ProjectInformation
    If Len(.Range("H2").Value) = 7 Then
        For Each C In .Range("H2", .Range("H" & .Rows.Count).End(xlUp))
            With Program_ListBox
                .AddItem C.Value
            End With
        Next C
    End If
End With

Нет необходимости зацикливать ячейки для добавления значений в список.Вы можете присвоить массив Range().Value непосредственно массиву Listbox.List.

 With ProjectInformation
    If Len(.Range("H2").Value) = 7 Then
        Program_ListBox.List = .Range("H2", .Range("H" & .Rows.Count).End(xlUp)).Value
    End If
End With
0 голосов
/ 23 мая 2018

Нет необходимости в цикле, вы можете передать диапазон как источник списка

Program_ListBox.List = Range("H2:H" & Lr)
...