我有一个userform
填充了命令按钮:单击的按钮确定要调用的宏,每个按钮隐藏表单,这允许常规模块中的代码继续。
实现“应用”按钮的最佳方法是什么(例如,在表单保持可见时执行宏)?我的“解决方法”是让“Apply”按钮直接调用宏,但这似乎打破了封装理念。我确信有更优雅的方法来实现这一目标。
模块代码:
Sub Test()
Dim lBtn As Long
Dim F As frmTest
Set F = New frmTest
F.Show
lBtn = F.plBtn 'get clicked button
Select Case lBtn
Case 1
' run macro1
Case 2
' run macro 2
' etc, etc
End Select
Unload F 'done with form
End Sub
表格代码:
Private Btn As Long
Public Property Get plBtn() As Long
plBtn = Btn
End Property
Private Sub cmd1_Click()
Btn = 1
Me.Hide
End Sub
Private Sub cmd2_Click()
Btn = 2
Me.Hide
End Sub
答案 0 :(得分:0)
您可以将数字ID到宏执行逻辑封装到一个函数中(将Long
替换为Enum
以获取易读性):
Public Enum Macros
MacroPrepareCake = 1
MacroBakeCake
MacroEatCake
End Enum
Public Sub RunMacro(macro As Macros)
Select Case macro
Case Macros.MacroPrepareCake
'// code/call
Case Macros.MacroBakeCake
'// code/call
Case Macros.MacroEatCake
'// code/call
End Select
End Sub
然后,您可以在隐藏表单或单击“应用”时调用RunMacro
。