【发布时间】:2015-01-13 09:57:02
【问题描述】:
我的 VBA 代码遇到了一个棘手的问题。情况是我有一个手动创建的用户表单。我使用宏向用户窗体添加控件,它对我来说很好用。但现在我还需要在用户窗体中添加事件代码。以下代码我想用.CodeModule.InsertLines 添加。重要的部分是我想调用的文本框应该可变地工作,但它不起作用,任何想法如何解决这个问题? (文本框命名如下:textbox_0、textbox_1 及以下)
Dim iMaxColumns As Integer
Dim iCount As Integer
iMaxColumns = Tabelle4.Cells(8, 2).Value
Dim vArray(0 To iMaxColumns - 1) As String
For iCount = 0 To iMaxColumns - 1
vArray(iCount) = textbox_ & iCount &.Value
Next
'do sth. with the arrray
我认为问题是我无法将变量添加到我的文本框对象。我也可以使用我的文本框的完整路径使用.Designer.Controls("textbox_" & iCount & "") 调用它,但这是一堆代码,我希望避免这种情况。
【问题讨论】:
-
您发布的代码似乎与您描述的问题无关。您是在问如何将该代码写入表单的代码后面?
-
@RubberDuck:不,我知道如何将代码写入表单的代码。我需要调用文本框变量。但它们是对象。所以我需要弄清楚如何在变量名称上调用对象;)
-
你能提供一个你想写到后面代码中的代码的例子吗?我想我可以提供帮助,但不清楚您要完成什么。
-
很难理解您的问题,但听起来您需要使用表单的控件集合和添加方法来添加控件。然后,您可以以编程方式访问控件。您可以使用类 MSForms.TextBox 的成员创建自定义类模块,使用 WithEvents 以及您需要的任何常见事件处理程序声明。另外,使用这个方法来实例化表单,这样你就可以搞砸了:
Dim f As UserForm1:Set f = New UserForm1:f.Show
标签: excel vba metaprogramming userform programmatically-created