在VBA中的不同button单击事件中使用button单击事件处理程序

在VBA的button点击事件function中,是否可以处理button点击? 我想遍历访问数据库表中的logging,find相似的logging,向用户呈现两个相似的logging,然后让他们单击一个button来select其中一个logging。

考虑这个伪代码:

Sub Choose_Click() For (loop through DB recordset) Label1 = Record1 Label2 = Record2 Listen for button click If (Click Button1) Choose Record1 do something ElseIf (Click Button2) Choose Record2 do something 

我会使用一个MsgBox。 显示两条logging后,执行此操作。

 Response = MsgBox("Process Record 1? No=Process Record 2",VbYesNo+vBDefaultButton1,vBQuestion,"Process records") If Response = vbYes Then Do stuff here Else Do stuff here End If 

或创build我自己的对话框做同样的事情,但logging1和logging2的button

下面是一个如何在一个函数中实现button点击事件的例子。
我使用全局variables解决了这个问题,正如@Rob Anthony的评论中所build议的那样。 当macros运行时,它等待全局variables值ButtonClicked改变,表示一个button被点击(在我的情况下,做出了select)。 如果所有你想表明的是一个button(任何button)被点击,那么布尔值会更好,但是这个解决scheme还指示哪个button被点击。 ButtonClicked的值由分配给selectbutton的各个单击事件macros填充。

 Option Explicit 'Global Variable Public ButtonClicked As String Private Sub Choose_Button_Click() ButtonClicked = "None" Do Until ButtonClicked <> "None" 'Do Nothing but allow other Events - Wait until a selection button is clicked DoEvents Loop MsgBox ButtonClicked & " Button Clicked!" End Sub Private Sub Select1_Button_Click() ButtonClicked = "Select1" End Sub Private Sub Select2_Button_Click() ButtonClicked = "Select2" End Sub