我创建了自己的Outlook表单,将其用作标准表面,以输入某些订单而不是正常的邮件表单。创建,编辑和发送工作完全正常,在下一步我想通过VBA插入一些代码。 我的问题是我无法在VBA编辑器中访问表单中的对象。例如。我想在选中某个复选框时显示一个消息框。根据代码将是:
Sub example()
If CheckBox1.Value = True Then
MsgBox("Checkbox 1 is checked.")
End If
End Sub
当我运行代码时,我收到无法找到对象的错误。每个其他对象也是如此,例如文本框或标签等。 我想解决方案非常简单,比如把 Item。或者......就像在每个物体前面那样。但到目前为止,我无法找到解决方案。
我正在使用Outlook 2010.
答案 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”时,就会出现打字错误。