VBA Excel-动态寻址用户窗体上的更新控件

VBA Excel-动态寻址用户窗体上的更新控件,excel,vba,Excel,Vba,我有很多用户表单,上面有静态控件。我创建了一个类模块,用于将事件处理程序应用于一组动态添加到userform的texbox。当我从类模块中指定一个userform地址时,我可以更新静态控件中的值 IAFStep2c.Controls("chkOptIn").Value = True 但是,当我尝试在变量中使用控件的用户名更新控件时,它不起作用 Dim oUserFOrm As Object Dim formName As String formName = "IAFStep2c" Set oU

我有很多用户表单,上面有静态控件。我创建了一个类模块,用于将事件处理程序应用于一组动态添加到userform的texbox。当我从类模块中指定一个userform地址时,我可以更新静态控件中的值

IAFStep2c.Controls("chkOptIn").Value = True
但是,当我尝试在变量中使用控件的用户名更新控件时,它不起作用

Dim oUserFOrm As Object
Dim formName As String
formName = "IAFStep2c"
Set oUserFOrm = UserForms.Add(formName)
oUserFOrm.Controls("chkOptIn").Value = True
我可以读取控件的值和其他属性,但不能更新它们。有人能提供一个解决方案吗

编辑

我用下面的类创建了另一个电子表格,结果相同。TextBox1和3得到更新,textBox2没有更新

Sub doStuff()
'MsgBox ("ping")
Dim oUserFOrm As Object
Dim formName As String
formName = "frmTest"
Set oUserFOrm = UserForms.Add(formName)
frmTest.Controls("TextBox1").Value = oUserFOrm.Controls("TextBox2").Name
oUserFOrm.Controls("TextBox2").Value = "PING"
frmTest.Controls("TextBox3").Value = oUserFOrm.Controls("TextBox2").TextAlign
End Sub

我就是这样做的:

UserForm1.Controls("Textbox1").Text = "123"

至少在我尝试的时候,它对我有效。Office 2010。

为什么有人否决了这个问题?它的配方很合理!我不能重现这种行为。什么版本的MS Excel?什么是错误消息?您是否尝试导出userform、删除它并再次导入它?您能显示您的类定义吗?Excel 2013。没有错误消息,只是无法更新字段并继续,就好像什么都没发生一样。未尝试导出/导入表单,我是新手,因此任何建议都将不胜感激。
UserForms.Add(formName)
将UserForm作为新的UserForm添加到内存中。它使用designer中提供的属性和值从designer获取UserForm。它不会得到已经显示的用户表单。谢谢Axel,这很有意义。仍然没有找到如何获取已显示的用户表单:(直接使用表单名称对我来说也很有效,当我试图从变量中获取表单名称时,它不会发生。因此,我们的想法是创建一个表单,并在刚刚创建的用户表单中操作一个文本框?不过,看看这里的答案,您可能会找到您需要的: