如何防止 Outlook 提醒過早或過晚?
例如,您每天從早上 9 點工作到下午 6 點,但現在您正在安排上午 10 點的約會,並在 Outlook 中為其設置了 2 小時的提醒。這意味著提醒將在您上班前的早上 8 點響起。另一方面,在特殊情況下,提醒可能會在半夜響起。這非常不方便,一些 Outlook 使用者可能希望防止 Outlook 提醒過早或過晚。在這裡,我將向您介紹一個 VBA 宏來解決這個問題。
- 透過 AI 技術提升您的電子郵件生產力,讓您快速回覆郵件、起草新郵件、翻譯郵件等,更有效率地進行操作。
- 透過規則自動化電子郵件處理,例如自動抄送密送、自動轉發;在不需要交換伺服器的情況下發送自動回覆(外出)...
- 當您處於密件抄送列表時,回覆所有人會收到類似密件抄送提示的提醒,並在忘記附件時獲得遺漏附件提醒...
- 透過帶有附件的回覆(全部)、自動新增問候語或日期時間至簽名或主題、回覆多封郵件等功能提高郵件效率...
- 透過撤回郵件、附件工具(壓縮全部、自動保存全部...)、刪除重複郵件以及快速報告等功能簡化郵件處理流程...
要防止 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。
最佳辦公室生產力工具
最新消息:Kutools for Outlook 推出免費版本!
體驗全新 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