【问题标题】:How to generate and populate Listboxes in VBA dynamically?如何在 VBA 中动态生成和填充列表框?
【发布时间】:2019-11-06 09:18:30
【问题描述】:

我正在尝试动态生成列表框(当前在用户窗体中)(取决于源工作表中使用的列)并用这些所属列的条目填充它们。

例如:

  • A 列有以下条目(每行一个):Apple、Banana、Peach

  • B 列有:蓝色、绿色、红色

用户窗体应生成两个列表框(一个用于 A 列,一个用于 B 列)并用这些列的相应条目填充它们。

我尝试循环遍历列表框,但我不断收到错误,因为我无法弄清楚如何正确获取语法。变量Lastrow 为我提供了一列中非空单元格的数量并正确运行(未显示代码以便更好地查看相关代码。

我是这样生成列表框的:

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 中。最后,我的目标只是将所有列和相应条目转移到有关动态列和行范围的列表框中。

【问题讨论】:

    标签: excel vba listbox populate


    【解决方案1】:

    您可以像这样按名称引用列表框:

    Me.Controls("Listbox" & i).addItem cell.value

    在这种情况下,我是用户表单。

    【讨论】:

    • 这就是我要找的。太感谢了!我尝试了将近三天来弄清楚如何解决这个问题,但无法找出如何与 ListBoxes 正确交互。有没有你推荐的网站或书籍?
    • 没问题。我知道的大部分东西都来自这个网站哈哈。
    • 嗨@Alex de Jong,是否可以直接在工作表上动态创建列表框?如果是这样,我该怎么做?目前我正在像这样在我的工作表上生成列表框,但是,我再次努力直接解决列表框。 Set LstBx = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ListBox.1", Link:=False, _ DisplayAsIcon:=False, Left:=692.25, Top:=180.75, Width:=96.75, Height _ :=55.5).Select
    • 我尝试过这样的事情:OS.Controls("Listbox" & i).AddItem cell.ValueOS.Forms("Listbox" & i).AddItem cell.Value 但不幸的是它不起作用
    • 你可以看看这个问题:stackoverflow.com/questions/56721002/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 2011-01-08
    相关资源
    最近更新 更多