Excel VBA将动态帧添加到另一个动态帧

时间:2017-12-12 22:30:34

标签: excel vba dynamic controls userform

如何将动态创建的帧添加到另一个动态创建的帧?

添加父框架:

Set c = UserForm1.Controls.Add("Forms.Frame.1", "newcontrol1", True)

添加子框架会导致错误:

Set c = UserForm1.Controls("newcontrol1").Controls.Add("Forms.Frame.1", "newcontrol2", True)

子框架不会直接在父框架之后添加,因此我需要一种在稍后阶段引用/访问父框架Controls的方法(基本上与上述表达式相当)。

如果...UserForm1.Controls("newcontrol1").Controls...是正常框架,则

"newcontrol1"会有效。我知道动态创建的控件不能像普通控件一样被引用,并且它们不是作为标准事件创建的,但是即使动态创建的框架也应该具有Controls属性...正确?

我觉得我之前已经设法做到了这一点,但我在网上找不到任何这样的例子。

非常感谢任何帮助。

谢谢, J先生

1 个答案:

答案 0 :(得分:0)

更改此行:

Set c = UserForm1.Controls("newcontrol1").Controls.Add("Forms.Frame.1", "newcontrol2", True)

要:

Set c = UserForm1.Controls("newcontrol1").Add("Forms.Frame.1", "newcontrol2", True)

这对我有用。我认为问题在于你使用了两次.Controls。