variables在VBA中的范围如何?
我有以下代码:
Dim RR As Range RR = Sheet90.Range("AA25:AA46") For i = 1 To ComboBox1.ListCount 'Remove an item from the ListBox. ComboBox1.RemoveItem 0 Next i Dim R As Range For Each R In RR.Cells If Len(R.Value) > 0 Then Sheet90.ComboBox1.AddItem (R.Value) End If Next R
显然,这是行不通的。
我试图用定义数组的非空值填充combobox。
Excel VBA不批准我的方法,它的错误信息不是很有帮助。
它说,
Run-time error '91' Object variable or With block variable not set
我认为这是某种词汇范围问题,但是对于我来说,我无法理解。 一切都被封闭在一个单独的私人SUB,奇怪的是,当我只是运行:
RR = Sheet90.Range("AA25:AA46") For i = 1 To ComboBox1.ListCount 'Remove an item from the ListBox. ComboBox1.RemoveItem 0 Next i
它清除盒子。
如果我Dim RR As Range
,一切都崩溃了。
我有很多年没有写vba,所以我可能会犯一些简单的错误,我真的很感激任何指导。
谢谢!
问题是在分配对象variables时需要使用Set
关键字:
'Change this line: RR = Sheet90.Range("AA25:AA46") 'To be this instead: Set RR = Sheet90.Range("AA25:AA46")
老虎的解决scheme绝对是你的错误的解决办法。
既然你正在寻找一些帮助/指导,我想给你一些关于使用你的combobox的提示,这些提示太多了,所以在这里写下来:
用一个语句清除combobox(而不是使用循环): ComboBox1.Clear
此外,假设您的范围没有填充公式等,您可以使用SpecialCells
方法返回该范围内的非空白单元格,从而避免了检查空白值的额外步骤( Len(r.Value) > 0
)。
Dim RR As Range Dim r As Range Set RR = Range("AA25:AA46").SpecialCells(xlCellTypeConstants) ComboBox1.Clear For Each r In RR.Cells ComboBox1.AddItem r Next