如果Outlook中的VBA声明

时间:2013-11-11 02:35:40

标签: outlook-vba

我正在尝试制作一个模板,用于在Outlook中进行传递。我希望它在主题行中说“日班”,如果它在0700和1900之间,则为“夜班”。怎么办呢。

到目前为止我所拥有的:

Sub MakeItem()
    Dim objMail As MailItem
    Set newItem = Application.CreateItemFromTemplate("C:\Passdown1.oft")
    newItem.Subject = "D1D NXE Day Shift Passdown " & Format(Now, "dd-mmm-yy")
    newItem.Display

    Set newItem = Nothing
End Sub

3 个答案:

答案 0 :(得分:1)

作为我的评论,这就是你做的......

Sub MakeItem()
    Dim objMail As MailItem
    Dim sShift As String ' Add this
    Set newItem = Application.CreateItemFromTemplate("C:\Passdown1.oft")
    ' Check hours
    Select Case Hour(Now)
        Case 7 To 18 ' Day shift until 18:59:59
            sShift = "Day"
        Case Else
            sShift = "Night"
    End Select
    ' Setup Subject replacing the <SHIFT>
    newItem.Subject = Replace("D1D NXE <SHIFT> Shift Passdown " & Format(Now, "dd-mmm-yy"), "<SHIFT>", sShift)
    newItem.Display

    Set newItem = Nothing
End Sub

答案 1 :(得分:1)

或者您可以在一行中执行此操作:

newItem.Subject = String.Format("D1D NXE {0} Shift Passdown {1}", If(Date.Now.Hour >= 7 AndAlso Date.Now.Hour < 19, "Day", "Night"), Format(Now, "dd-MMM-yy"))

答案 2 :(得分:0)

指定条件的任何条件,并指定条件为真时要排除的任何语句

If condition [ Then ]
    [ statements ]
[ ElseIf elseifcondition [ Then ]
    [ elseifstatements ] ]
[ Else
    [ elsestatements ] ]
End If

' Single-line syntax:
If condition Then [ statements ] [ Else [ elsestatements ] ]

<强>条件

必需。表达。必须求值为True或False,或者为可隐式转换为Boolean的数据类型。

如果表达式是一个Nullable布尔变量,其值为Nothing,则该条件被视为表达式不为True,并且执行Else块。

,然后

单行语法中必需;多行语法中的可选项。

<强>语句

可选。 If ... Then后面的一个或多个语句,如果condition的计算结果为True,则执行。

<强> elseifcondition

如果存在ElseIf则必需。表达。必须求值为True或False,或者为可隐式转换为Boolean的数据类型。

<强> elseifstatements

可选。 ElseIf之后的一个或多个语句......然后,如果elseifcondition的计算结果为True,则执行该语句。

<强> elsestatements

可选。如果没有先前条件或elseifcondition表达式求值为True,则执行一个或多个语句。

结束

终止If ... Then ... Else阻止。