为每个或命名范围填充ListBox

问题描述 投票:0回答:2

所有我试图用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

我担心这是一个非常基本的问题但是在研究网站/谷歌之后我根本无法让这个简单的任务发挥作用。

任何帮助,将不胜感激。

vba excel-vba listbox userform excel
2个回答
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

1
投票

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

Program_ListBox.List = Range("H2:H" & Lr)
© www.soinside.com 2019 - 2024. All rights reserved.