Vba 如何在子程序中为userform上的每个控件创建动态命名?
我想创建一个例程,调用该例程时将根据控件名动态执行函数。这是我的密码:Vba 如何在子程序中为userform上的每个控件创建动态命名?,vba,Vba,我想创建一个例程,调用该例程时将根据控件名动态执行函数。这是我的密码: Private Sub myControl(counter as string) If mySecondControl & counter.Value = "Y" Then myThirdControl & counter.Caption = "Do Something Here" 'Error syntax End If End Sub Private Sub doThis
Private Sub myControl(counter as string)
If mySecondControl & counter.Value = "Y" Then
myThirdControl & counter.Caption = "Do Something Here" 'Error syntax
End If
End Sub
Private Sub doThis_Change()
myControl("1")
myControl("2")
End Sub
您需要从表单的
控件
集合中获取所需的控件
:
If Controls("mySecondControl" & counter).Value = "Y" Then
Controls("myThirdControl" & counter).Caption = "Do Something Here"
End If
您需要从表单的
控件
集合中获取所需的控件
:
If Controls("mySecondControl" & counter).Value = "Y" Then
Controls("myThirdControl" & counter).Caption = "Do Something Here"
End If
好的,我知道你在做什么。但是“设置表单名称”并不是OP需要做的事情。他们需要从
控件
集合访问控件,并使用该控件
对象。。。就像代码所做的那样。使用MyFormName的是有害的,它对默认实例有效,并且控件很可能不在该实例上。您想让我使用,这是完全多余的,因此请删除With
块,只需执行If控件(“…”
)。在表单的默认实例上工作,总有一天会让你吃亏的。不要那样做。谢谢你的编辑,但我完全是多余的?以前从未听说过。因为Me
引用了类的当前实例,所以您已经可以直接访问它的所有成员-和我一起根本不会给您买任何东西,它不会暴露任何不可访问的东西。事实上,和我一起
不允许你访问任何你已经可以访问的私人成员,因此它实际上是有害的。不,谢谢你-这给了我一个=)好的,我知道你在做什么了。但是“设置表单名称”并不是OP需要做的事情。他们需要从控件
集合访问控件,并使用该控件
对象。。。就像代码所做的那样。使用MyFormName的是有害的,它对默认实例有效,并且控件很可能不在该实例上。您想让我使用,这是完全多余的,因此请删除With
块,只需执行If控件(“…”
)。在表单的默认实例上工作,总有一天会让你吃亏的。不要那样做。谢谢你的编辑,但我完全是多余的?以前从未听说过。因为Me
引用了类的当前实例,所以您已经可以直接访问它的所有成员-和我一起根本不会给您买任何东西,它不会暴露任何不可访问的东西。事实上,和我一起
不允许你访问任何你已经可以访问的私人成员,因此它实际上是有害的。不,谢谢你,这给了我一个=)