Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有多个if的每个循环的vba_Vba_If Statement_Foreach - Fatal编程技术网

具有多个if的每个循环的vba

具有多个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

我想运行一个vba应用程序来查找此邮箱中的电子邮件,并给我过去三天中每个日期的总数。文件夹是正确的,我可以看到下一个邮件项目。我面临的主要问题是,我希望在到达第四天之后,每个人的任务都结束。我在foreach和嵌套if语句的结尾处遇到编译错误。如果是一对一的话,我需要下一个吗

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),然后
退出
如果结束
下一个