为每个或命名范围填充ListBox

时间:2018-05-23 17:49:12

标签: vba excel-vba listbox userform excel

我试图用For Each循环填充列表框,迭代遍历行。 for each循环遍历Named范围内的项目(ProgramIDs)。

我目前使用的代码是

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 :(得分:1)

无需循环,您可以将范围作为列表框的来源传递

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

答案 1 :(得分:0)

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