我有这段代码:
Sub StoreReminders()
Dim LastRow As Long
Dim i As Integer
LastRow = ActiveSheet.UsedRange.Rows.Count
i = 2
Debug.Print LastRow
Dim appOL As Object
Dim objReminder As Object
Set appOL = GetObject(, "Outlook.application")
Set objReminder = appOL.CreateItem(1) ' olAppointmentItem
For i = 2 To LastRow
Debug.Print i
Debug.Print Range("h" & i)
objReminder.Start = Range("h" & i)
objReminder.Duration = Range("I" & i)
objReminder.Subject = "Renew " & Range("a" & i)
objReminder.ReminderSet = True
objReminder.Save
Next i
End Sub
它会在objReminder.Start = Range("h" & i)
处中断,因为根据Debug.Print
代码,它会返回整个日期列,而不仅仅是H2中的日期
Range("a" & i)
代码不能与objReminder.Start
一起使用吗?
Debug.print
正确打印出来。
答案 0 :(得分:0)
如果您检查Start
属性的MSDN条目,则会显示:
返回或设置日期,表示约会的开始日期和时间或日记条目。读/写。
(他们的重点)
所以,在你的VBA代码中,我会改变这一行:
objReminder.Start = Range("h" & i)
对此:
objReminder.Start = CDate(Range("h" & i).Value)
使用CDate
函数将值转换为日期。