创建Outlook约会

时间:2018-10-02 07:14:53

标签: vba outlook createitem

我创建了一个基本代码,其中将通过VBA excel UserForm创建一个Outlook约会。但是,我的问题是我不知道如何基于TextBox10和Textbox11的值来设置“开始”,因为它不能同时接受文本框的两个值。

 Dim oAppt As AppointmentItem

    Candidate = TextBox2.Value + " " + TextBox1.Value
    InitialDate = TextBox10.Value
    InitialTime = TextBox11.Value

        Set oAppt = Outlook.Application.CreateItem(olAppointmentItem)

            oAppt.Subject = Candidate
            oAppt.Start = TextBox10.Value + TextBox11.Value
            oAppt.Start = IntialTime
            oAppt.Recipients.Add ("Email@gmail.com")
            oAppt.Save
        Candidate = Sheets("Client Lineup List").Range("F" & lMaxRows + 1).Value

2 个答案:

答案 0 :(得分:1)

首先,始终使用Option Explicit

首先将TextBox值转换为日期/时间。下面的例子

Dim myDate As Date
myDate = CDate(TextBox10.Value & " " & TextBox11.Value)

但是,在这种情况下,还需要进一步考虑-检查是否输入了有效的日期和时间,否则我上面的示例代码将出错。一个简单的部分解决方案是使用DatePicker而不是TextBox10。 VB中曾经有一个DateTimePicker,但我不确定VBA中的当前等效位置在哪里。

此外,请检查我是如何将字符串连接起来的(之间有一个空格),使用“&”而不是“ +”,这会产生有趣的副作用,尤其是如果您没有设置Option Explicit且没有设置声明了变量(使它们成为Variant)。

答案 1 :(得分:1)

您应该将TextBox值转换为日期/时间。

您可以使用与工作表的“数据”►“文本到列”命令等效的VBA,将类似于日期的文本列快速转换为实际日期。

(TextBox10.Value & " " & TextBox11.Value).TextToColumns Destination:=.Cells(1), DataType:=xlFixedWidth, FieldInfo:=Array(0, xlYMDFormat)
.NumberFormat = "yyyy-mm-dd"   'change to any date-based number format you prefer the cells to display

注意:您应该检查日期和时间是否有效。

有关更多信息,您可以参考以下链接:

Excel VBA - Convert Text to Date?