将UserForm列表框声明为模块中的变量? Excel VBA

时间:2016-01-26 13:39:49

标签: excel-vba listbox userform vba excel

好吧这是我在这里发表的第一篇文章,所以请保持温和。

我有一个Userform,其中包含一个包含x个值的列表框。我有一个单独的模块调用此Userform,然后根据列表框中选择的值执行一些过程。我有以下内容:

Dim lb as ListBox

lb = Userform1.Listbox1
For x = 0 to lb.ListCount - 1 Then
    'Do the stuff I need it to
Next x

我得到的问题是lb返回" Nothing"。

我确信这很简单,但我无法弄清楚。感谢帮助。

2 个答案:

答案 0 :(得分:0)

在运行代码之前,您是否关闭了用户表单,就像这样的情况,那么您的列表框实际上不存在于内存中,而listcount将不会返回任何内容。您还可以删除分配lb变量的行,并直接获取列表框的listcount,如下面的代码所示。此外,如果您不希望在代码执行循环时显示userform,只需隐藏userform运行循环,然后在此之后卸载userform。这样,列表框仍然在内存中足够长的时间,以便循环获得正确的值

for x = 1 to userform.listbox.listcount
    '' Do you stuff
next x

我尝试了代码,它给了我正确的价值。如果还有其他任何事情让我知道并希望这会有所帮助:)

答案 1 :(得分:-1)

就像那样声明模块。

Sub listboxpopulate(listb as string,usf as userform)
for i=0 Usf.controls(listb).listcount-1

Do ur stuff
Next

End sub

这将有助于