2017-08-19 30 views
2

我有這樣的代碼:objReminder.Start =範圍(「H」&I)不工作

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

debug.print只能打印一個字符串。它不能打印數組。請檢查H2。它可能包含無效數據 – jsotola

+0

別忘了代碼循環,所以debug.print重複了一堆次 – jsotola

回答

0

如果你檢查的Start屬性MSDN條目,然後它說:

返回或設置一個日期指示委任或雜誌項中的開始日期和時間。讀/寫。

(妝點)

所以,在你的VBA代碼,我會改變這一行:

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

要這樣:

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

使用CDate函數轉換一個值到一個日期。

+0

修復了它羅賓 - 謝謝 – aoswald