Trs*_*Trs 1 excel events vba click
在一个Sub,我想触发一个Click事件.例如,对于给定的Button,ButtonCommand1我可以通过运行代码来完成此操作:
Sub test()
Call Sheet1.ButtonCommand1_Click
End sub
Run Code Online (Sandbox Code Playgroud)
,在那里ButtonCommand1_Click是Public Sub写的Sheet1.
但是,我的问题是我在运行sub本身之前不知道要点击的Button的名称.所以我需要这样的东西:
Sub test()
Dim i As Integer
Dim button As String
i = 'SOMETHING
button = "ButtonCommand" & i
Call Sheet1.button_Click
End sub
Run Code Online (Sandbox Code Playgroud)
,在那里,同样,Sub Sheet1.button_Click就已经被包含在Sheet1一个Public Sub所有可能i的.
我尝试了几个选项,即将按钮设置为Object并使用该Shapes集合进行播放以便:
Set button = shapes.range(Array("ButtonCommand" & i)) AND i还尝试通过执行shapes.range(Array("ButtonCommand" & i)).select然后运行来选择正确的形状Application.Click.但没有任何作用.谢谢您的帮助!
您不会调用事件处理程序.处理程序处理事件,它们由VBA运行时调用以响应某些特定事件.
"手动"调用事件处理程序是任何语言的反模式,VBA也不例外.Private默认情况下,事件处理程序是有原因的.
很难准确地说出你在使用示例代码做了什么,但是说你有这个:
Private Sub Button1_Click()
DoStuff
End Sub
Run Code Online (Sandbox Code Playgroud)
然后在其他地方,你想调用那个点击处理程序 - 不要!DoStuff改为调用!
使用CallByName
Sub test()
Dim strName As String
Dim i As Long
i = 1
strName = "Button" & i & "_Click"
CallByName Sheet1, strName, VbMethod
End Sub
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5226 次 |
| 最近记录: |