好吧这是我在这里发表的第一篇文章,所以请保持温和。
我有一个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"。
我确信这很简单,但我无法弄清楚。感谢帮助。
答案 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
这将有助于