objReminder.Start =范围(“h”和i)不起作用

时间:2017-08-19 22:01:30

标签: excel vba excel-vba

我有这段代码:

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正确打印出来。

1 个答案:

答案 0 :(得分:0)

如果您检查Start属性的MSDN条目,则会显示:

  

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

(他们的重点)

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

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

对此:

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

使用CDate函数将值转换为日期。