首页 > 解决方案 > 将多个文本框值传输到数组

问题描述

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

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 或名称的顺序通过控件?如果是这样,我怎么能找到最初的创作顺序?

标签: vbaexceltextbox

解决方案


您可以这样做,使用控件名称的一致结构。

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

推荐阅读