我创建了一个ActiveX按钮,使用行
打开表单except
但是当我点击按钮时,我得到错误9(下标超出范围)。表单存在,表单的名称是UserForm1。当我调试时,它会突出显示UserForm1.Show行,但我无法弄清楚出了什么问题。
编辑:
初始化代码位于
之下UserForm1.Show
答案 0 :(得分:0)
您尚未正确声明list1
变量。
总是声明所有变量,对于数组,如果可能在初始化时进行维度,则执行此操作。或者,将它们保留为变体,您可以使用Array(...)
函数进行分配(就像使用colors
一样)。但对于list1
数组,您已将其初始化为一个上限为-1的空数组,因此list1(0)
的第一个赋值将失败,因为0
已超出界限。相反,既然你知道这个数组需要len = 68,那么只需用Dim
语句标注它:
Option Explicit ' # Enforce variable declaration!!
Private Sub UserForm_Initialize()
Dim list1(67)
Dim colors()
Dim j as Long
colors = Array("Blue", "Black", "Gold", "Green")
For j = 0 to 67
list1(j) = ...
(如果您稍后需要调整大小,可以使用ReDim
和ReDim Preserve
语句。
答案 1 :(得分:0)
所以我知道这是一篇过时的文章,但是我开始从事一个项目,遇到相同的问题后才发现。
我需要的是在初始化用户窗体时填充ListBox的代码,起初,我尝试使用数组和集合来完成操作,这产生了错误(9),并将我带到这里。然后,我只是取出数组并将数据直接添加到ListBox中。您也可以使用ComboBox进行此操作。见下文。大卫·泽门斯(David Zemens)的答案是可行的,但您无法调整已确定尺寸的数组的大小,因此必须使数组变大,然后才能使用,只能在ListBox中添加空白。
Option Explicit
Private Sub UserForm_Initialize() 'Get headers for List Box
Dim colCount As Integer
Dim i As Integer
colCount = Cells(1, Columns.Count).End(xlToLeft).Column 'How many headers to work with
For i = 1 To colCount
lBox_headers.AddItem Cells(1, i) 'Add headers to this listbox
Next i
End Sub
此代码只是获取列标题并将其添加到列表框中。希望它对在这里找到自己的人有所帮助。