我试图使用针对此问题的解决方案:Programmatically create event listener in VBA在我的特定情况下:
我以编程方式创建组合框。我想要做的是以编程方式创建一个带有精确标签的文本框或几个texbox,在生成的组合框旁边有多个标签,具体取决于它们的值。
以下是我用于以编程方式创建这些组合框的代码:
设置listBoxB1 = Frame1.Controls.Add(" Forms.ComboBox.1")
With listBoxB1
.Name = "list" & i
.Height = 15
.Width = 100
.Left = 70
.Top = 10 * i * 3
.AddItem "NUM"
.AddItem "LIST"
End With
所以我希望当用户选择值LIST时,单个文本框会显示在带有标签的组合框旁边,当他或她使用值NUM时,会在组合框旁边创建6个文本框并与其水平对齐
我实际上希望当用户更改组合框的值时显示会自动更改,如果您能给出一些指示,将会很有帮助。
您能告诉我如何根据上述链接调整解决方案,因为我对VBA很新,并且不知道如何做到这一点,我试图实施给出的代码却失败了。
答案 0 :(得分:0)
它真的有点牵扯。这个问题讨论了它:Assign on-click VBA function to a dynamically created button on Excel Userform。接受的答案包含了我多次使用过的技巧。创建所有你需要提前控制的控件(表单上只有一定数量的不动产,所以在实践中这将是一个相当小的数字),并根据需要动态显示(或隐藏它们)控制.visible属性。甚至可以在设计视图中将1个控件放在另一个控件的顶部,在运行时只有1个可见。运行时可见的将接收事件。