【问题标题】:Add click event to optionbutton将点击事件添加到选项按钮
【发布时间】:2015-11-27 15:40:23
【问题描述】:

我有一个 Outlook 2013 宏,我在其中弹出了一个表单。所有对象(按钮、文本框、选项按钮)都由 form.Load() 事件中的代码添加。

表单有两个带有是/否的选项按钮。如果按下否,则应禁用其他一些按钮,文本框。我的问题是如何将事件处理程序添加到这两个按钮?

我以编程方式添加的按钮:

    y = y + 30
    x = 230
    Set btnOppYes = Me.Controls.Add("Forms.OptionButton.1", "btnOppYes")
    With btnOppYes
        .Caption = "Ja"
        .Left = x
        .Top = y
        .Width = 110
        .GroupName = "OppYesNo"
    End With

    x = x + 110
    Set btnOppNo = Me.Controls.Add("Forms.OptionButton.1", "btnOppNo")
    With btnOppNo
        .Caption = "Nein"
        .Left = x
        .Top = y
        .Width = 110
        .GroupName = "OppYesNo"
        .Value = True
    End With

我尝试添加此代码,但没有成功。当我点击选项按钮时,没有像“test”这样的 msgbox:

Sub btnOppYes_Click()
    MsgBox ("test")
End Sub

【问题讨论】:

  • 这是什么表格?表格区域?加载项中的 Windows 窗体? VBA 用户窗体?自定义 Outlook 项目表单?
  • @EricLegault 这是一个 VBA 用户表单

标签: vba events outlook


【解决方案1】:

动态添加时,该事件与按钮无关,Outlook 不允许像 Excel 那样访问 CodeModule。这是一种解决方法。

将此代码粘贴到您的用户表单中

Dim clsbtnOpp As New Class1
Private Sub UserForm_Initialize()
    Dim btnOppYes As MSForms.OptionButton
    Dim btnOppNo As MSForms.OptionButton
    y = y + 30
    x = 230
    Set btnOppYes = Me.Controls.Add("Forms.OptionButton.1", "btnOppYes")
    With btnOppYes
        .Caption = "Ja"
        .Left = x
        .Top = y
        .Width = 110
        .GroupName = "OppYesNo"
    End With
    Set clsbtnOpp.btnOppYes = btnOppYes

    x = x + 110
    Set btnOppNo = Me.Controls.Add("Forms.OptionButton.1", "btnOppNo")
    With btnOppNo
        .Caption = "Nein"
        .Left = x
        .Top = y
        .Width = 110
        .GroupName = "OppYesNo"
        .Value = True
    End With
    Set clsbtnOpp.btnOppNo = btnOppNo
End Sub

并创建一个名为 Class1 的新类并将此代码粘贴到其中

Public WithEvents btnOppYes As MSForms.OptionButton
Public WithEvents btnOppNo As MSForms.OptionButton
Private Sub btnOppYes_click()
    MsgBox "You clicked yes"
    UserForm1.TextBox1.Enabled = True
End Sub
Private Sub btnOppNo_click()
    MsgBox "You clicked no"
    UserForm1.TextBox1.Enabled = False
End Sub

运行您的表单并进行测试。你可以玩弄它并根据你的需要定制它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    • 2018-10-31
    相关资源
    最近更新 更多