如何在VBA中定义checkbox的数组

我知道类似的问题已经问过像这样和这个,但我有初始化checkbox数组对象(我的VBA是相当生锈)的问题。

我有以下代码:

Dim chkAdQ(4) As Checkbox Set chkAdQ(0) = chkAdQ1 Set chkAdQ(1) = chkAdQ2 Set chkAdQ(2) = chkAdQ3 Set chkAdQ(3) = chkAdQ4 

其中chkAdQ1,chkAdQ2等是窗体上的ActiveXcheckbox。 在debugging中,我可以看到chkAdQ(4)在声明本身上提示'nothing',因此赋值给出了一个Type不匹配的exception。

我也尝试通过声明chkAdQ(4)作为一个对象,但无济于事。 有什么想法吗?

尝试这个

 Dim chkAdQ(0 To 3) As Variant Set chkAdQ(0) = chkAdQ1 Set chkAdQ(1) = chkAdQ2 Set chkAdQ(2) = chkAdQ3 Set chkAdQ(3) = chkAdQ4 

您可以用一个简单的循环很好地添加工作表上的所有checkbox

 Sub AddCheckBoxesToArray() Dim chkAdQ As Variant Dim cb i = 0 ReDim chkAdQ(i) For Each cb In Sheet2.OLEObjects If TypeName(cb.Object) = "CheckBox" Then If i > 0 Then ReDim Preserve chkAdQ(0 To i) Set chkAdQ(i) = cb i = i + 1 End If Next cb For Each cb In chkAdQ Debug.Print cb.Name Next cb End Sub 

使用时去除第二个循环。 这只是为了certificate他们已经全部通过将他们的名字打印到立即窗口而被添加了