这是一个vba问题。我发现了一个问题: “使用VBA将控件添加到Excel用户窗体中的帧” 并使用其方法在我的用户表单中向我的框架添加命令按钮。由于我添加了四个命令按钮,我在循环中运行代码,并使用
With ...
.Name = "commandbutton" & x
为每个命令按钮指定自己的名称。我在每个命令按钮的代码宏中都包含了(因为我重命名了它们,我知道每个cb的名称是什么)但是当我点击按钮时,没有任何反应。
或者,如果有人可以向我解释如何使用代码将表单上的控件放入框架中,我可以用不同的方式解决我的问题。
谢谢,
迈克尔
答案 0 :(得分:0)
似乎事件只处理在编译VBA程序时声明的对象变量(即在设计时)。如果在程序中动态创建对象(即在运行时),则需要分配引用将这些对象转换为已经声明的适当对象变量。
根据您的示例,在与您的UserForm
相关的模块中,您需要:
Public WithEvents btn1 As MSForms.CommandButton
Public WithEvents btn2 As MSForms.CommandButton
Public WithEvents btn3 As MSForms.CommandButton
Public WithEvents btn4 As MSForms.CommandButton
(变量类型的MSForms
前缀可能不是绝对必要的)
然后在你的With
语句中创建控件,你需要将每个控件分配给一个最终变得相当混乱的变量。
更好的解决方案:
Visible
属性以显示正确的按钮CommandButton
对象的某些属性来确定(例如Caption
属性,Tag
属性)然后具有该按钮的事件处理程序根据该属性调用适当的函数ListBox
或ComboBox
代替按钮