我有一个数组(我将有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