objReminder.Start =范围(“h”和我)不工作

我有这个代码:

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代码,它返回整个date列而不是H2中的date

Range("a" & i)代码是否不能与objReminder.Start一起使用? Debug.print正确打印出来。

如果您检查Start属性的MSDN条目然后它说:

返回或设置date,指示约会或日记条目的开始date和时间。 读/写。

(他们的重点)

所以,在你的VBA代码中,我会改变这一行:

 objReminder.Start = Range("h" & i) 

对此:

 objReminder.Start = CDate(Range("h" & i).Value) 

使用将值转换为date的CDate函数。