我创建了一个基本代码,其中将通过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
答案 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
注意:您应该检查日期和时间是否有效。
有关更多信息,您可以参考以下链接: