宏填充动态数组(来自userform复选框选项)

时间:2016-02-02 22:20:49

标签: arrays excel-vba vba excel

我有一个数组(我将有4个)根据用户选择1到4个复选框填充。

我的问题是:为什么我不能直接填充数组来循环复选框并查找所选的数组?

这不起作用:

Dim chkBox As Control
Dim sectArr() As Variant
Dim s as long
s = 0

For Each chkBox In Me.SectorsFrame.Controls 'Sector-level frame
If TypeName(chkBox) = "CheckBox" And chkBox.Value = True Then
   sectArr(s) = chkBox.Caption
   s = s + 1        
End If
Next

这有效:

Dim chkBox As Control
Dim sectArr As Variant, sectStr As String
sectStr = ""

For Each chkBox In Me.SectorsFrame.Controls 'Sector-level frame
    If TypeName(chkBox) = "CheckBox" And chkBox.Value = True Then
        sectStr = sectStr & "|" & chkBox.Caption
    End If
Next
sectStr = Right(sectStr, Len(sectStr) - 1)
sectArr = Split(sectStr, "|")

我得到“下标超出范围”(在数组上带括号)或类型不匹配(没有括号)。

我不想处理字符串然后将它们砍掉并用它们填充我的数组(我是否必须处理它们?)。但是我对此知之甚少,不知道我能做什么,不能做什么。

我接下来的3个阵列可以有1到6个选项,以及可能有多个选项的二维数组。

=====================编辑2/3/2016 @ 1800z ================== ======

这看起来很有希望 - 我接受了你所说的PeterT,然后玩了一些,提出了以下(可能仍然是笨拙的)代码:

Dim chkBox As Control
Dim sectArr() As Variant
Dim sec As Long

 sec = 0
    For Each chkBox In Me.SectorsFrame.Controls 'Sector-level frame
        If TypeName(chkBox) = "CheckBox" And chkBox.Value = True Then
            ReDim Preserve sectArr(sec)
            sectArr(sec) = chkBox.Caption
            sec = sec + 1
        End If
    Next

0 个答案:

没有答案