创建 Outlook 约会

Creating Outlook Appointment

我已经创建了一个基本代码,它将通过 VBA excel UserForm 创建 Outlook 约会。但是,我的问题是,我不知道如何根据 TextBox10 和 Textbox11 的值设置 'Start',因为它不同时接受文本框的两个值。

 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

首先,始终使用Option Explicit

首先将您的 TextBox 值转换为 date/time。下面的例子

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

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

此外,检查我是如何连接字符串的(中间有一个 space),使用“&”,而不是“+”,这可能会产生有趣的副作用,特别是如果你没有设置 Option Explicit 并且没有声明你的变量(使它们成为 Variant)。

您应该将 TextBox 值转换为 date/time。

您可以使用 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

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

更多信息可以参考这个link:

Excel VBA - Convert Text to Date?