word vba宏 - 动态引用表单元素

时间:2011-08-22 13:27:20

标签: vba ms-word

我有一个我创建的包含许多TextBox的用户表单。每个字段都命名为name1,name2,name3等。

从用于处理数据的Word宏调用此用户窗体。根据运行宏的文件中的数据,我希望数组中的内容显示在每个TextBox中。

我希望能够做的是动态引用表单TextBoxes,以便我可以在循环中填充它们,而不必为每个单独的值/ TextBox执行单独的if语句。

因此,例如,而不是必须做这样的事情:

For p = 1 To count
   if p=1 then
       dForm.name1.Text=myVar(p)
   end if
   if p=2 then
       dForm.name2.Text=myVar(p)
   end if
   .
   .
   .
   etc.
Next p

我希望能够提供更简单有效的内容,如:

For p = 1 To count
   tempString = "name" & p
   dForm.tempString.Text = myVar(p)
Next p

不幸的是,我无法弄清楚如何做到这一点。

这可能吗?我一直希望类似于在Actionscript中可以做的事情会起作用,但事实并非如此(在Actionscript中我只会做dForm [“name”+ p] .Text = myVar [p])。

任何想法/建议?我没有尝试过任何工作,我也无法在网上找到任何关于此的信息。我确信必须要做一些工作来避免不得不做大量的if语句('name'TextBox''只是我表单中许多重复TextBox之一,所以不得不做if语句因为所有这些都需要永远)......

1 个答案:

答案 0 :(得分:1)

UserForm1.Controls("name" & p).Value = myVar(p)

...或

Private Sub FillTextBoxes()
    Dim ctl As Control

    For Each ctl In UserForm1.Controls
        If TypeName(ctl) = "TextBox" Then
            If ctl.Name Like "name*" Then
                ctl.Value = myVar(p)
            End If
        End If
    Next
End Sub