在Outlook窗体中编程VBA

时间:2014-08-18 14:18:15

标签: vba outlook outlook-vba outlook-2010

我创建了自己的Outlook表单,将其用作标准表面,以输入某些订单而不是正常的邮件表单。创建,编辑和发送工作完全正常,在下一步我想通过VBA插入一些代码。 我的问题是我无法在VBA编辑器中访问表单中的对象。例如。我想在选中某个复选框时显示一个消息框。根据代码将是:

Sub example()
If CheckBox1.Value = True Then
MsgBox("Checkbox 1 is checked.")
End If
End Sub

当我运行代码时,我收到无法找到对象的错误。每个其他对象也是如此,例如文本框或标签等。 我想解决方案非常简单,比如把 Item。或者......就像在每个物体前面那样。但到目前为止,我无法找到解决方案。

我正在使用Outlook 2010.

3 个答案:

答案 0 :(得分:1)

我知道这是一年太晚了,但你会想做下面这个例子。这是一种解决方法,但你可以获得任何选择的价值。

Sub ComboBox1_Click()
    Set objPage = Item.GetInspector.ModifiedFormPages("Message")
    Set Control = objPage.Controls("ComboBox1")

    MsgBox "The value in the " & Control.Name & _
           "control has changed to " & Control.Value & "."
End Sub

您应该能够获取值,只需使用Inspector获取所需对象的句柄

答案 1 :(得分:0)

以下内容摘自here

  

使用自定义表单时,Outlook仅支持Click事件   控制。这是按钮的自然选择,但不是最佳选择   像组合框一样的控件。您通过将代码插入到代码中来编写代码   form的VBScript编辑器。您需要在Outlook中打开Outlook表单   单击表单设计器并单击“表单”组中的“查看代码”按钮   开发人员选项卡。

Sub CheckBox1_Click()
  msgbox "Hello World"
End Sub

代码页相当小,没有语法高亮显示。我现在只是尝试了它,它确实有效。不要忘记发布表单以获取新的更改。

答案 2 :(得分:0)

我知道这已经晚了6年了,但是在VB和VBA中,只需以表格名称开头。 (如果那行不通,只需继续向上移动一个父对象,您就会到达那里。)因此,您的代码变为:

Sub example()
If MYFORMNAME.CheckBox1.Value = True Then
     MsgBox("Checkbox 1 is checked.")
End If
End Sub

当然,在输入“ MYFORMNAME”之后。您会知道它是否会起作用,因为打完句点后系统识别出“ MYFORMNAME”时,就会出现打字错误。