0

我创建了一个基本代码,它将通过 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
4

2 回答 2

1

首先,Option Explicit始终使用。

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

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

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

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

于 2018-10-02T07:46:14.710 回答
1

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

您可以使用等效于工作表的 Data ► Text-to-Columns 命令的 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 - 将文本转换为日期?

于 2018-10-02T08:59:40.453 回答