我有一个用命令按钮填充的userform:单击的按钮确定要调用的宏,每个按钮都隐藏表单,这允许常规模块中的代码继续执行。
实现"Apply“按钮的最佳方式是什么(例如,在窗体保持可见的情况下执行宏)?我的“变通办法”是让"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发布于 2014-02-17 01:35:06
您可以将数字id到宏的执行逻辑封装到一个函数中(为了便于阅读,用Enum代替了Long ):
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然后,您可以在窗体处于隐藏状态或单击Apply时调用RunMacro。
https://stackoverflow.com/questions/21814413
复制相似问题