将多个文本框值传输到数组

时间:2018-07-06 16:48:47

标签: vba excel-vba textbox excel

我有一个包含13个文本框的用户窗体,我试图从中将最后10个(即#4-#13)的值传输到数组中。我的想法是循环浏览表单上的所有控件,并使用一个简单的计数器跳过前三个文本框,然后依次将我的数组元素设置为其余文本框值。

For Each Ctrl In Me.Controls
    If TypeName(Ctrl) = "TextBox" Then
        i = i + 1
        If i > 3 Then
            PO(i - 3) = Ctrl.Value
        End If
    End If
Next Ctrl

该概念本身有效;但是,循环从文本框#3而不是#1开始,最终我在数组中得到以下值-(#6-#13,#1,#2)。因此,它找到的第一个文本框控件是#3,然后转到#13,然后回到#1和#2。

这些框按照逻辑顺序命名(并为索引建立索引),以适合我要尝试的操作,但是显然此过程有些我不太了解-或VBA以其他方式获得它比我好。

For Each Ctrl语句是否有可能按照控件最初创建的顺序而不是tabindex或名称的顺序通过控件?如果是这样,我如何找到原始的创建顺序?

1 个答案:

答案 0 :(得分:3)

您可以使用控件名称的一致结构来做到这一点。

For i = 4 To 13
    PO(i - 3) = Me.Controls("Textbox" & i).Value
Next i