Excel Userform“应用”按钮

时间:2014-02-16 17:01:19

标签: vba excel-vba excel

我有一个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

1 个答案:

答案 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