【问题标题】:Outlook compile error - procedure declaration does not matchOutlook 编译错误 - 过程声明不匹配
【发布时间】:2018-10-09 16:39:50
【问题描述】:

我正在尝试使用 VB 代码将我的 Outlook 电子邮件自动转发到另一个电子邮件地址,但我不断收到编译错误。

我在编译代码时得到的错误是“过程声明与具有相同名称的事件或过程的描述不匹配”。

Sub Application_NewMail(myMailToFW As Outlook.MailItem)

    Set myNamespace = Application.GetNamespace("MAPI")
    Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox)
    Set myemails = myInbox.Items
    Set mynewemails = myemails.Restrict("[unread]=true")

    Dim x As Integer
    For x = 1 To myemails.Count Step 1
    If myemails(x).UnRead(True) Then
    Dim myMailToFW As Outlook.MailItem
Set myMailToFW = myemails(x)
Set myMailToFW = myMailToFW.forward
myMailToFW.Recipients.Add ("email@email.com")
myMailToFW.Send
myemails(x).UnRead = False
End If
Next

End Sub

我将 email@email.com 更改为我要转发到的电子邮件。

【问题讨论】:

  • NewMail's handler 不带参数。
  • 所以我应该把“NewMail”改成“ItemAdd”?
  • 这完全取决于您试图用来运行代码的事件,这取决于您希望代码做什么以及在什么情况下执行的目标。

标签: vba outlook


【解决方案1】:

您的class module 的过程名称与事件名称冲突。

procedure 与事件同名,但没有相同的签名(即parameters 的数量和类型)。如果您执行诸如向事件过程添加新参数之类的操作,就会发生这种情况。

如果过程不是与事件对应的事件过程,则更改其名称。如果过程对应事件,则使参数列表与事件所需的一致(如果有的话)。

更多信息,你可以参考这个链接:

Procedure declaration does not match description of event or procedure having same name

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多