KutoolsforOffice — 一套方案,五大工具。事半功倍。三月特賣:20% 折扣

如何避免 Outlook 提醒時間過早或過晚?

作者Kelly修改日期

例如,您每天的工作時間為上午 9:00 至下午 6:00,但現在安排了一場上午 10:00 的約會,並在 Outlook 中設定提前提醒 2 小時。這將導致提醒在您上班前的上午 8:00 觸發。更特殊的情況下,提醒甚至可能在午夜響起,造成相當不便。許多 Outlook 使用者都希望避免提醒時間過早或過晚。接下來,我將為您介紹一個 VBA 巨集,有效解決此問題。

Office Tab - 在 Microsoft Office 中啟用分頁編輯與瀏覽功能,讓工作輕鬆自如
立即解鎖 Kutools for Outlook,永久享有超過 100 項功能的無限使用權
透過這些進階功能強化您的 Outlook 2024 - 2010 或 Outlook 365. 盡享 100+ 強大功能,全面提升您的郵件體驗!

若要防止 Outlook 提醒時間過早或過晚,請依照下列步驟操作:

步驟 1:同時按下 Alt+F11 鍵,即可開啟 Microsoft Visual Basic for Applications 視窗。

步驟 2:在左側窗格中展開 Microsoft Outlook 物件,並將下列 VBA 巨集貼到 ThisOutlookSession 中。

VBA:防止 Outlook 提醒時間過早或過晚

Public WithEvents g_CalendarItems As Outlook.Items
Public Sub Application_Startup()
Set g_CalendarItems = Outlook.Session.GetDefaultFolder(olFolderCalendar).Items
End Sub
Private Sub g_CalendarItems_ItemAdd(ByVal Item As Object)
CheckReminder Item
End Sub
Private Sub g_CalendarItems_ItemChange(ByVal Item As Object)
CheckReminder Item
End Sub
Sub CheckReminder(ByVal Item As Object)
On Error GoTo ProcError
Dim strProcName As String
strProcName = "CheckReminder"
reminderMaxHour = 20
reminderMinHour = 9
Dim aAptItem As Outlook.AppointmentItem
Set aAptItem = Item
If aAptItem.ReminderSet Then
Dim reminderDate As Date
reminderDate = aAptItem.Start - aAptItem.ReminderMinutesBeforeStart / (24 * 60)
reminderHour = (reminderDate - Int(reminderDate)) * 24
tolerance = 0.01 ' avoid floating point small diffs (little bit less than a min)
If reminderHour < reminderMinHour - tolerance Or reminderHour > reminderMaxHour + tolerance Then
' best guess, first try to advance to next minHour
reminderDateSuggestion = reminderDate + (reminderMinHour - reminderHour) / 24
' verify if first guess is valid
If reminderHour < reminderMinHour - tolerance And reminderDateSuggestion <= aAptItem.Start Then
' OK, first guess is valid, keep it
ElseIf reminderHour > reminderMaxHour Then
' go back to max hour (same day)
reminderDateSuggestion = reminderDate - (reminderHour - reminderMaxHour) / 24
Else
' go back to max hour (previous day)
reminderDateSuggestion = reminderDate - (reminderHour + 24 - reminderMaxHour) / 24
End If
rep = MsgBox("The Reminder time is out of specified working period. Would you like to change the Reminder time?" , vbQuestion + vbYesNoCancel)
If rep = vbCancel Then
aAptItem.Display
ElseIf rep = vbYes Then
aAptItem.ReminderMinutesBeforeStart = (aAptItem.Start - reminderDateSuggestion) * 24 * 60
aAptItem.Save
End If
End If
End If
ProcExit:
Exit Sub
ProcError:
MsgBox "Unanticipated error " & Err.Number & " " & Err.Description & vbCrLf & "In procedure: " & strProcName
End Sub

 

注意:您可以透過修改上述 VBA 程式碼中的下列參數來指定您的工作時段:
reminderMaxHour = 20
reminderMinHour = 9

步驟 3:儲存此 VBA 程式碼,並重新啟動 Microsoft Outlook。

從現在起,在指定工作時段之外建立約會並點擊儲存並關閉按鈕後,系統將立即彈出提醒對話方塊!

防止 Outlook 提醒過早或過晚的步驟截圖

若提醒時間早於指定的 reminderMinHour,請在對話方塊中點擊,系統將自動調整提醒時間,確保於指定的 reminderMinHour 時觸發提醒。

若提醒時間晚於指定的 reminderMaxHour,請在對話方塊中點擊,系統將自動調整提醒時間,並於指定的 reminderMaxHour 時提醒您。

注意:此 VBA 程式碼適用於 Outlook 2013,但不支援 Outlook 2010 與 2007.


最佳 Office 生產力工具

體驗全新 Kutools for Outlook,內含 100+ 項超強功能!立即點擊下載!

🤖KUTOOLS AI運用先進 AI 技術,輕鬆處理電子郵件——無論是回覆、摘要、優化、擴充、翻譯還是撰寫郵件,通通一鍵搞定!

📧 郵件自動化自動答覆(支援 POP 與 IMAP)預約寄送郵件寄信時依規則自動抄送密送自動轉發(高級規則)自動加入問候語自動將多收件人郵件拆分為個別訊息……

📨 郵件管理撤回郵件依主旨等條件封鎖詐騙郵件刪除重複郵件高級搜尋整合文件夾……

📁 附件專業版批次儲存批次解除附加批次壓縮自動保存自動拆離自動壓縮……

🌟 介面魔法😊更多精美酷炫表情符號重要郵件來到時提醒您最小化 Outlook 而非關閉……

👍 一鍵奇蹟帶附件全部答復防釣魚郵件🕘顯示發送者當前時間時區……

👩🏼‍🤝‍👩🏻 聯絡人與行事曆從選取的郵件中批次新增聯絡人將聯繫人組拆分為個別群組移除生日提醒……

用您的慣用語言暢享 Kutools — 完整支援英文、西班牙文、德文、法文、中文等 40 多種語言!

立即一鍵解鎖 Kutools for Outlook!別再等待,馬上下載,全面提升工作效率!

kutools for outlook features1kutools for outlook features2

🚀 一鍵下載 — 立即取得所有 Office 增益集

強烈推薦:Kutools for Office(5 合 1)

一鍵下載五個安裝程式,一次完成 — Kutools for Excel、Outlook、Word、PowerPointOffice Tab Pro立即點擊下載!

  • 一鍵便利:只需一次操作,即可下載全部五個安裝套件!
  • 🚀 隨時應對任何 Office 任務:按需安裝所需增益集,立即提升工作效率!
  • 🧰 包含:Kutools for Excel/Kutools for Outlook/Kutools for Word/Office Tab Pro/Kutools for PowerPoint