Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 组合框事件侦听器_Vba_Excel - Fatal编程技术网

Vba 组合框事件侦听器

Vba 组合框事件侦听器,vba,excel,Vba,Excel,我试图使用针对这个问题给出的解决方案:在我的特殊情况下: 我以编程方式创建组合框。我想做的是以编程方式创建一个带有精确标签的单个文本框,或者在生成的组合框旁边创建几个带有尽可能多标签的文本框,具体取决于它们的值 以下是我用于以编程方式创建这些组合框的代码: Set listBoxB1=Frame1.Controls.Add(“Forms.ComboBox.1”) 因此,我希望当用户选择值列表时,在组合框旁边显示一个带标签的文本框,当用户使用value NUM时,在组合框旁边创建6个文本框,并与之

我试图使用针对这个问题给出的解决方案:在我的特殊情况下:

我以编程方式创建组合框。我想做的是以编程方式创建一个带有精确标签的单个文本框,或者在生成的组合框旁边创建几个带有尽可能多标签的文本框,具体取决于它们的值

以下是我用于以编程方式创建这些组合框的代码:

Set listBoxB1=Frame1.Controls.Add(“Forms.ComboBox.1”)

因此,我希望当用户选择值列表时,在组合框旁边显示一个带标签的文本框,当用户使用value NUM时,在组合框旁边创建6个文本框,并与之水平对齐

实际上,我希望当用户更改组合框的值时,显示会自动更改,如果您能给出一些指示,这将非常有用


您能告诉我如何使上面链接中的解决方案适应我的情况吗?因为我对VBA非常陌生,不知道如何做到这一点,我曾尝试实现给定的代码,但失败了。

这确实有些复杂。这个问题讨论它:。被接受的答案包含了一个技巧,我已经用了很多很多次了。提前创建您需要的所有控件(表单上只有有限数量的不动产,因此在实践中这将是一个合理的小数目),并通过控制.visible属性使它们在需要时动态可见(或隐藏)。甚至可以在设计视图中让一个控件位于另一个控件之上,在运行时只有一个控件可见。运行时可见的将接收事件

Private-Sub-listBoxB1\u Click()
Private-Sub-listBoxB1\u Change()
@Raystafarian这类事情对动态创建的控件不起作用。@john我想这取决于它们的“动态”程度。。如果它们是动态创建的,那么它们可以是按顺序创建的,也可以是专门命名的,或者其他任何形式。当然不会动态创建这些事件,但它们仍然可以工作。@Raystafarian试试看。如果控件在设计时不存在,则即使将其定义为name_click()(其中name是添加控件时指定给控件的名称),事件处理程序也不会启动。
With listBoxB1
       .Name = "list" & i
       .Height = 15
       .Width = 100
       .Left = 70
       .Top = 10 * i * 3
       .AddItem "NUM"
       .AddItem "LIST"
End With