在UserForm(VBA)中动态构建数组

时间:2016-03-22 12:06:48

标签: arrays vba dynamic userform

我正在尝试相应地构建一个数组,以确定是否从另一个数组中勾选了一组CheckBox(在Userform中)。所以代码目前是:

   Dim MyArray(10) As Integer
   MyArray = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
  Dim IntrnlArray() As Variant

  For i = 1 To 10
  If Me.Controls("CheckBox" & i).Value = True Then
  ' some code I cant figure out!
  End If
Next

然后在其他地方使用生成的(可能更小的)新数组IntrnlArray()。因此,新数组将包含已勾选的复选框的编号。这些数字将在其他地方用于进一步的计算,而不是告诉用户哪个复选框已被勾选。 任何帮助将不胜感激!!!

2 个答案:

答案 0 :(得分:1)

不完全确定你想要什么,但我想这就够了:

Dim IntrnlArray() As boolean

For i = 1 To 10
        redim IntrnlArray(i)
        IntrnlArray(i) = nz(Me.Controls("CheckBox" & i).Value,false)
Next

您不需要2个阵列。此代码将每个复选框的值(true或false)分配给数组的相应元素

答案 1 :(得分:1)

由于@ Mr-Nemo在评论中提到我也提供了一个使用集合的例子:

Public Sub UsingCollections()

Dim MyCollection As New Collection

For i = 1 To 10
    If Me.Controls("CheckBox" & i).Value = True Then
        MyCollection.Add i
    End If
Next i

End Sub