我有一个我创建的包含许多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语句因为所有这些都需要永远)......
答案 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