如何避免 Outlook 提醒時間過早或過晚?
例如,您每天的工作時間為上午 9:00 至下午 6:00,但現在安排了一場上午 10:00 的約會,並在 Outlook 中設定提前提醒 2 小時。這將導致提醒在您上班前的上午 8:00 觸發。更特殊的情況下,提醒甚至可能在午夜響起,造成相當不便。許多 Outlook 使用者都希望避免提醒時間過早或過晚。接下來,我將為您介紹一個 VBA 巨集,有效解決此問題。
- 提升您的郵件處理效率!運用人工智慧技術,讓您快速回覆郵件、撰寫新郵件、翻譯訊息,輕鬆高效完成各項操作!
- 透過規則自動化寄送郵件,搭配自動抄送密送,自動轉發自動寄送自動答覆(外出中),無需 Exchange 伺服器即可實現……
- 取得貼心提醒功能,例如 答覆的郵件為 BCC 時提示當您位於密件副本(BCC)清單中卻回覆全部收件人時,以及遺漏附件提醒針對遺忘的附件發出提示……
- 透過以下功能提升郵件處理效率:附帶附件回覆(全部),自動於簽名檔或主旨中加入問候語或日期與時間,一次回覆多封郵件……
- 透過以下功能簡化郵件處理流程:撤回郵件,附件工具(全部壓縮、自動保存全部……),刪除重複,以及快速報告……
若要防止 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。
從現在起,在指定工作時段之外建立約會並點擊儲存並關閉按鈕後,系統將立即彈出提醒對話方塊!

若提醒時間早於指定的 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!別再等待,馬上下載,全面提升工作效率!


🚀 一鍵下載 — 立即取得所有 Office 增益集
強烈推薦:Kutools for Office(5 合 1)
一鍵下載五個安裝程式,一次完成 — Kutools for Excel、Outlook、Word、PowerPoint 與 Office Tab Pro!立即點擊下載!
- ✅ 一鍵便利:只需一次操作,即可下載全部五個安裝套件!
- 🚀 隨時應對任何 Office 任務:按需安裝所需增益集,立即提升工作效率!
- 🧰 包含:Kutools for Excel/Kutools for Outlook/Kutools for Word/Office Tab Pro/Kutools for PowerPoint