具有多个if的每个循环的vba
我想运行一个vba应用程序来查找此邮箱中的电子邮件,并给我过去三天中每个日期的总数。文件夹是正确的,我可以看到下一个邮件项目。我面临的主要问题是,我希望在到达第四天之后,每个人的任务都结束。我在foreach和嵌套if语句的结尾处遇到编译错误。如果是一对一的话,我需要下一个吗具有多个if的每个循环的vba,vba,if-statement,foreach,Vba,If Statement,Foreach,我想运行一个vba应用程序来查找此邮箱中的电子邮件,并给我过去三天中每个日期的总数。文件夹是正确的,我可以看到下一个邮件项目。我面临的主要问题是,我希望在到达第四天之后,每个人的任务都结束。我在foreach和嵌套if语句的结尾处遇到编译错误。如果是一对一的话,我需要下一个吗 Sub NonTicketEmailsCount() Dim objOutlook As Object, objnSpace As Object, objFolder As MAPIFolder Dim EmailCou
Sub NonTicketEmailsCount()
Dim objOutlook As Object, objnSpace As Object, objFolder As MAPIFolder
Dim EmailCount As Integer
Dim MailItem
Set objOutlook = CreateObject("Outlook.Application")
Set objnSpace = objOutlook.GetNamespace("MAPI")
On Error Resume Next
Set objFolder = objnSpace.Folders("Mailbox - IT Support Center").Folders("Non ticket related emails")
If Err.Number <> 0 Then
Err.Clear
MsgBox "No such folder."
Exit Sub
End If
EmailCount = objFolder.Items.Count
Dim dateStr As String
Dim dict As Object
Dim msg As String
Set dict = CreateObject("Scripting.Dictionary")
' Determine date of each message:
For Each MailItem In objFolder.Items
rt = MailItem.ReceivedTime 'getting received time for each mailitem
nrt = Format(rt, "M/ d/ yyyy") 'formatting the received time to match value of datevalue keyword
If DateValue(nrt) = Empty Then
NonTicket0 = NonTicket0 + 1
ElseIf DateValue(Date - 1) = DateValue(nrt) Then
NonTicket1 = NonTicket1 + 1
ElseIf DateValue(Date - 2) = DateValue(nrt) Then
NonTicket2 = NonTicket2 + 1
ElseIf DateValue(Date - 3) = DateValue(nrt) Then
NonTicket3 = NonTicket3 + 1
ElseIf DateValue(Date - 4) = DateValue(nrt) Then
Exit For
End If
msg = "Total NonTicket emails in the folder: " & EmailCount & vbNewLine _
& NonTicket1 & " = NonTicket Emails on " & Date - 1 & vbNewLine _
& NonTicket2 & " = NonTicket Emails on " & Date - 2 & vbNewLine _
& NonTicket3 & " = NonTicket Emails on " & Date - 3 & vbNewLine _
MsgBox "Number of emails in the folder: " & EmailCount & vbNewLine _
& "NonTicket Emails Yesterday: " & NonTicket1 & vbNewLine _
& "NonTicket Emails Yesterday: " & NonTicket2 & vbNewLine _
& "NonTicket Emails Yesterday: " & NonTicket3
'Send Mail
Set OutApp = CreateObject("outlook.Application")
Set OutMail = OutApp.CreateItem(o)
With OutMail
.Subject = "Non Ticket Emails"
.To = "kylesparmark@glissondo.com; meisnert@glissondo.com"
.Body = msg
.Display
End With
Set OutMail = Nothing
Set OutApp = Nothing
Set objFolder = Nothing
Set objnSpace = Nothing
Set objOutlook = Nothing
End Sub
Sub-nonticketEmailScont()
Dim objOutlook为对象,objnSpace为对象,objFolder为MAPIFolder
将电子邮件计数为整数
暗淡邮件
设置objOutlook=CreateObject(“Outlook.Application”)
设置objnSpace=objOutlook.GetNamespace(“MAPI”)
出错时继续下一步
设置objFolder=objnSpace.Folders(“邮箱-IT支持中心”).Folders(“与票据无关的电子邮件”)
如果错误号为0,则
呃,明白了
MsgBox“没有这样的文件夹。”
出口接头
如果结束
EmailCount=objFolder.Items.Count
Dim dateStr作为字符串
作为对象的Dim dict
作为字符串的Dim msg
Set dict=CreateObject(“Scripting.Dictionary”)
'确定每条消息的日期:
对于objFolder.Items中的每个邮件项
rt=MailItem.ReceivedTime'获取每个邮件项目的接收时间
nrt=Format(rt,“M/d/yyyy”)'格式化接收到的时间以匹配datevalue关键字的值
如果DateValue(nrt)=空,则
非ticket0=非ticket0+1
ElseIf DateValue(日期-1)=日期值(nrt),然后
非ticket1=非ticket1+1
ElseIf DateValue(日期-2)=日期值(nrt),然后
非ticket2=非ticket2+1
ElseIf DateValue(日期-3)=日期值(nrt),然后
非ticket3=非ticket3+1
ElseIf DateValue(日期-4)=日期值(nrt),然后
退出
如果结束
msg=“文件夹中的非邮件总数:”&EmailCount&vbNewLine_
&NonTicket1&“=日期为“&Date-1&vbNewLine”的非ticket电子邮件_
&NonTicket2&“=日期为“&Date-2&vbNewLine”的非ticket电子邮件_
&NonTicket3&“=日期为“&Date-3&vbNewLine”的非ticket电子邮件_
MsgBox“文件夹中的电子邮件数:”&EmailCount&vbNewLine_
&“昨天的非ticket电子邮件:”&NonTicket1&vbNewLine_
&“昨天的非ticket电子邮件:”&NonTicket2&vbNewLine_
&“昨天的非ticket电子邮件:”&非ticket3
“发邮件
Set-OutApp=CreateObject(“outlook.Application”)
Set OutMail=OutApp.CreateItem(o)
发邮件
.Subject=“非票证电子邮件”
.To=”kylesparmark@glissondo.com; meisnert@glissondo.com"
.Body=msg
陈列
以
发送邮件=无
设置应用程序=无
设置objFolder=Nothing
设置objnSpace=Nothing
设置objOutlook=Nothing
端接头
您缺少关闭每个循环的的下一个语句:
For Each MailItem In objFolder.Items
rt = MailItem.ReceivedTime 'getting received time for each mailitem
nrt = Format(rt, "M/ d/ yyyy") 'formatting the received time to match value of datevalue keyword
If DateValue(nrt) = Empty Then
NonTicket0 = NonTicket0 + 1
ElseIf DateValue(Date - 1) = DateValue(nrt) Then
NonTicket1 = NonTicket1 + 1
ElseIf DateValue(Date - 2) = DateValue(nrt) Then
NonTicket2 = NonTicket2 + 1
ElseIf DateValue(Date - 3) = DateValue(nrt) Then
NonTicket3 = NonTicket3 + 1
ElseIf DateValue(Date - 4) = DateValue(nrt) Then
Exit For
End If
NEXT ' <--- Add this
objFolder.Items中每个邮件项的
rt=MailItem.ReceivedTime'获取每个邮件项目的接收时间
nrt=Format(rt,“M/d/yyyy”)'格式化接收到的时间以匹配datevalue关键字的值
如果DateValue(nrt)=空,则
非ticket0=非ticket0+1
ElseIf DateValue(日期-1)=日期值(nrt),然后
非ticket1=非ticket1+1
ElseIf DateValue(日期-2)=日期值(nrt),然后
非ticket2=非ticket2+1
ElseIf DateValue(日期-3)=日期值(nrt),然后
非ticket3=非ticket3+1
ElseIf DateValue(日期-4)=日期值(nrt),然后
退出
如果结束
下一个