Excel VBA - 如何从变量范围填充ListBox的值?

Pet*_*y87 2 excel vba listbox excel-vba listboxitem

我在名为"电子邮件"的工作表中的列A中有一个名称列表

我想用名称列A填充userform ListBox.但是,我无法指定固定范围,因为此列表将增长和缩小.那么如何让userform使用正确数量的项目填充列表?

这是我目前正在尝试但不起作用(我相信这里有些人会明白为什么不这样做),我也看到了另一个使用简单For循环的例子,但我无法再找到这个例子给你看.

Private Sub UserForm_Initialize()

Dim rngName As Range
Dim rng1 As Range
Dim rng2 As Range
Dim ws As Worksheet


Set ws = Worksheets("Email")
Set rngName = ws.Range("A:A").Find(What:="*", LookAt:=xlWhole, MatchCase:=False, SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
Set rng1 = ws.Range("A1")

On Error GoTo ErrorHandle

Me.lbUsed.List = Range(rng1 & ":" & rngName).Value

ErrorHandle:

End Sub
Run Code Online (Sandbox Code Playgroud)

编辑:

我现在有以下代码,但是当我加载userform时它无法工作:

Private Sub UserForm_Initialize()

Dim rngName As Range
Dim rng1 As Range

Set rngName = Worksheets("Email").Range("A:A").Cells.Find(What:="*", LookAt:=xlWhole, MatchCase:=False, SearchOrder:=xlByRows, SearchDirection:=xlPrevious)

Set rng1 = Worksheets("Email").Range("A1:" & rngName.Address)

Me.lbUsed.List = Worksheets("Email").Range(rng1).Value


End Sub
Run Code Online (Sandbox Code Playgroud)

谁能指出我正确的方向?

Net*_*loh 5

如果要使用A列中的所有项目填充列表框(假设这些项目在连续范围内),您可以通过修改如下代码来完成此操作:

Private Sub UserForm_Initialize()
    Dim rngName As Range
    Dim ws As Worksheet
    Dim i As Integer

    Set ws = Worksheets("Email")
    For i = 1 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row Step 1
        If ws.Cells(i, 1).Value <> vbNullString Then Me.lbUsed.AddItem ws.Cells(i, 1).Value
    Next i
End Sub
Run Code Online (Sandbox Code Playgroud)