Excel VBA定时提醒:打造你的专属智能工作闹钟,告别手忙脚乱!88
*
亲爱的Excel爱好者们,大家好!我是您的中文知识博主。在日常工作中,我们常常需要处理堆积如山的数据和任务,有没有那么一瞬间,你希望Excel能像你的贴心小秘书一样,在关键时刻悄悄提醒你:“嘿,别忘了那个重要的会议!”或者“是时候休息一下,保护视力啦!”
没错,今天咱们要聊的,就是如何利用Excel VBA(Visual Basic for Applications)的强大功能,打造一个属于你自己的“智能工作闹钟”,让你彻底告别手忙脚乱和任务遗漏!
本文将从基础原理讲起,一步步带你实现一个功能丰富、操作简便的定时提醒系统。无论你是VBA新手还是有一定基础的开发者,都能从中找到实用的技巧和灵感。
VBA定时提醒的核心武器:
要实现定时提醒,VBA中有一个“明星”函数,那就是``。它是Excel应用程序的一个方法,专门用于在指定时间执行某个宏(Sub过程)。理解并掌握它,是实现定时提醒的关键。
`` 语法详解:
EarliestTime, Procedure, [LatestTime], [Schedule]
`EarliestTime` (必需):这是一个日期/时间表达式,表示宏最早可以执行的时间。例如,`Now + TimeValue("00:00:10")` 表示从现在开始10秒后执行,`TimeValue("09:00:00")` 表示每天的早上9点执行(如果当前时间已过9点,则为次日9点)。
`Procedure` (必需):一个字符串,表示要执行的宏(Sub过程)的名称。例如,`"MyReminderMacro"`。
`LatestTime` (可选):一个日期/时间表达式,表示宏最迟可以执行的时间。如果 `EarliestTime` 到期时Excel正忙,那么它会在 `EarliestTime` 和 `LatestTime` 之间找一个空闲时间执行。如果超过 `LatestTime` 仍无法执行,则该宏将不会执行。通常情况下,我们可以省略这个参数,让Excel尽可能在 `EarliestTime` 执行。
`Schedule` (可选):一个布尔值,用于指定是安排宏执行 (`True`) 还是取消之前安排的宏 (`False`)。默认为 `True`。
是不是感觉有点抽象?没关系,我们马上通过一个简单的例子来理解它。
第一步:创建一个最基础的定时提醒
我们先从一个最简单的“Hello World”式的定时提醒开始。它将在你设定的几秒后弹出一个消息框。
操作步骤:
打开VBA编辑器: 在Excel中按下 `Alt + F11` 组合键。
插入标准模块: 在VBA编辑器左侧的“工程”窗口中,右键点击你的工作簿对象(通常是“VBAProject (你的文件名.xlsm)”),选择 `插入` -> `模块`。
编写提醒宏: 在新插入的模块中,输入以下代码:
'========================================
' 模块:Module1
' 功能:最基础的定时提醒示例
'========================================
Option Explicit
' 1. 这是实际会执行的提醒内容(一个消息框)
Sub SimpleReminder()
MsgBox "时间到啦!这是一个简单的VBA定时提醒!", vbInformation, "VBA提醒"
End Sub
' 2. 这是用来设置和启动定时器的宏
Sub StartSimpleTimer()
' 设置在当前时间10秒后执行SimpleReminder宏
' Now是当前日期和时间
' TimeValue("00:00:10") 表示10秒钟
EarliestTime:=Now + TimeValue("00:00:10"), Procedure:="SimpleReminder"
MsgBox "定时提醒已设置,10秒后将弹出消息框。", vbOKOnly, "提醒设置成功"
End Sub
' 3. 这是用来取消之前设置的定时器的宏
Sub CancelSimpleTimer()
' 注意:取消定时器时,EarliestTime和Procedure必须与设置时完全一致。
' 如果要取消的是一个未来的OnTime,需要知道其精确的EarliestTime。
' 但对于我们这种简单的10秒后提醒,如果还没到点,我们知道是 Now + 10秒
' 更可靠的取消方法是保存 EarliestTime,我们会在后面讲到。
' 这里暂时假设我们知道要取消的是 SimpleReminder 这个宏,并且时间点也一致
' 实际操作中,如果你不知道精确的EarliestTime,这个方法可能无法取消。
' 因此,一个更好的做法是,取消时提供一个确定的 EarliestTime。
' 比如,如果之前设定的时间是 T,那么取消时 EarliestTime 也要是 T。
' 这里先用一个简单的尝试,它可能无法取消已经设置的、未保存 EarliestTime 的 OnTime
' 为了演示目的,我们假设我们想取消一个在未来某个特定时间(比如10秒后)的提醒
' 但精确的取消一个“不确定何时触发的”OnTime是困难的。
' 一般我们会存储 EarliestTime 的值。
' 这里暂时不执行取消操作,因为没有保存EarliestTime。
' 我们将在更高级的例子中介绍如何正确取消。
MsgBox "对于没有保存 EarliestTime 的 OnTime 任务,精确取消比较复杂。我们将在后续部分介绍更可靠的取消方法。", vbExclamation, "取消提醒"
End Sub
运行宏:
回到Excel界面,按下 `Alt + F8` 打开“宏”对话框。
选择 `StartSimpleTimer`,然后点击 `运行`。
你会看到一个消息框提示“定时提醒已设置,10秒后将弹出消息框。”
等待10秒,另一个消息框会弹出“时间到啦!这是一个简单的VBA定时提醒!”
恭喜你,你的第一个VBA定时提醒成功了!
第二步:让提醒功能更实用——自动启动与重复提醒
仅仅手动启动可不够智能,我们希望当Excel工作簿打开时,提醒功能就能自动就绪。同时,很多任务是需要周期性提醒的,而不是一次性的。
1. 工作簿打开时自动启动提醒
我们可以在 `Workbook_Open` 事件中调用启动定时器的宏。
操作步骤:
打开VBA编辑器: `Alt + F11`。
找到ThisWorkbook对象: 在“工程”窗口中,双击你的工作簿对象下的 `ThisWorkbook`。
编写 `Workbook_Open` 事件: 在右侧代码窗口选择 `Workbook` 对象和 `Open` 事件,或者直接输入以下代码:
'========================================
' 对象:ThisWorkbook
' 功能:工作簿打开时自动启动定时提醒
'========================================
Option Explicit
Private Sub Workbook_Open()
' 调用启动定时器的宏
' 为了避免重复启动,可以添加一些逻辑判断,例如检查是否已经有一个 OnTime 任务在运行
' 这里我们直接调用 StartSimpleTimer
Call StartSimpleTimer ' 调用前面 Module1 中的宏
' 如果希望在打开时就立即设置一个每日提醒,可以这样做:
' TimeValue("09:00:00"), "DailyMeetingReminder"
' TimeValue("14:30:00"), "BreakReminder"
End Sub
现在,当你保存并重新打开这个Excel文件时(记得保存为`.xlsm` 启用宏的工作簿),`StartSimpleTimer` 宏就会自动运行,设置10秒后的提醒。
2. 实现重复提醒功能
`` 默认只执行一次。要实现重复提醒,我们需要在被执行的宏内部再次调用 `` 来重新安排下一次执行。
操作步骤:
修改Module1中的代码:
'========================================
' 模块:Module1 (修改)
' 功能:实现重复定时提醒
'========================================
Option Explicit
' 全局变量,用于存储下一次提醒的时间,以便精确取消
Public NextReminderTime As Date
' 1. 这是实际会执行的提醒内容
Sub RepeatingReminder()
MsgBox "再次提醒您:这是周期性任务提醒!", vbInformation, "VBA周期提醒"
' 核心:在提醒宏执行后,再次设置下一次提醒
' 例如,每隔1分钟提醒一次
NextReminderTime = Now + TimeValue("00:01:00") ' 设置下一次提醒在1分钟后
EarliestTime:=NextReminderTime, Procedure:="RepeatingReminder"
' 也可以根据需要,只在工作日或特定时间段内重复
' If Weekday(Date) <> vbSaturday And Weekday(Date) <> vbSunday Then
' NextReminderTime = Now + TimeValue("00:01:00")
' EarliestTime:=NextReminderTime, Procedure:="RepeatingReminder"
' End If
End Sub
' 2. 这是用来启动重复定时器的宏
Sub StartRepeatingTimer()
' 首次设置提醒,例如20秒后第一次提醒
NextReminderTime = Now + TimeValue("00:00:20")
EarliestTime:=NextReminderTime, Procedure:="RepeatingReminder"
MsgBox "重复定时提醒已设置,20秒后第一次提醒,之后每分钟提醒一次。", vbOKOnly, "重复提醒设置成功"
End Sub
' 3. 这是用来取消重复定时器的宏 (非常重要!)
Sub CancelRepeatingTimer()
If NextReminderTime > 0 Then ' 确保有已设置的定时器
' 使用之前保存的精确时间来取消
EarliestTime:=NextReminderTime, Procedure:="RepeatingReminder", Schedule:=False
MsgBox "所有重复定时提醒已取消。", vbOKOnly, "取消成功"
NextReminderTime = 0 ' 清除已取消的时间
Else
MsgBox "目前没有正在运行的重复定时提醒。", vbExclamation, "无提醒"
End If
End Sub
现在,运行 `StartRepeatingTimer` 宏,它会在20秒后首次提醒,然后每隔1分钟弹出一次消息框。要停止它,运行 `CancelRepeatingTimer` 宏即可。
注意:为了能够精确取消定时器,我们引入了一个全局变量 `NextReminderTime` 来保存下一次触发的时间。这是 `` 取消机制的关键。
第三步:打造更友好的提醒界面——自定义UserForm
`MsgBox` 固然简单,但它会中断你的工作流,并且功能单一。一个自定义的UserForm(用户窗体)能提供更丰富的交互,例如显示更多信息、添加“小睡”(Snooze)功能或“忽略”按钮。
我们来创建一个简单的UserForm,包含提醒文本、一个“小睡5分钟”按钮和一个“我知道了”按钮。
操作步骤:
插入用户窗体: 在VBA编辑器中,右键点击你的工作簿对象,选择 `插入` -> `用户窗体`。默认会创建一个 `UserForm1`。
设计UserForm1:
在 `UserForm1` 上,从左侧的“工具箱”中拖放以下控件:
一个 `Label` 控件(名称可设为 `lblMessage`),用于显示提醒内容。调整其 `Caption` 属性为空,`WordWrap` 属性为 `True`,`AutoSize` 属性为 `False`,并调整大小使其能显示多行文本。
一个 `CommandButton` 控件(名称设为 `btnSnooze`),`Caption` 属性设为“小睡5分钟”。
一个 `CommandButton` 控件(名称设为 `btnDismiss`),`Caption` 属性设为“我知道了”。
调整窗体大小和控件布局,使其美观。
编写UserForm1的代码: 双击 `UserForm1` 进入其代码视图,输入以下代码:
'========================================
' 对象:UserForm1
' 功能:自定义提醒界面
'========================================
Option Explicit
' 用于传递提醒内容的公共变量
Public ReminderContent As String
Private Sub UserForm_Initialize()
' 当窗体初始化时,设置提醒内容
= ReminderContent
End Sub
Private Sub btnSnooze_Click()
' 点击“小睡”按钮:隐藏窗体,并重新安排一个短时间的提醒
' 隐藏窗体,而不是卸载,以便可以在隐藏后设置新的 OnTime
' 设置在5分钟后再次弹出这个UserForm
NextReminderTime = Now + TimeValue("00:05:00")
EarliestTime:=NextReminderTime, Procedure:="ShowCustomReminder"
MsgBox "已为您小睡5分钟,稍后再次提醒。", vbInformation, "提醒已小睡"
End Sub
Private Sub btnDismiss_Click()
' 点击“我知道了”按钮:卸载窗体,并取消任何后续的 OnTime 提醒(如果是单次提醒)
' 如果是重复提醒,这里应该取消当前序列的下一个 OnTime,或者根据业务逻辑决定是否完全停止
Unload Me
' 如果是重复提醒,这里可以不取消,让它继续在后台运行
' 如果是单次提醒,则在这里调用 CancelRepeatingTimer (如果之前设置了NextReminderTime)
MsgBox "提醒已关闭。", vbInformation, "提醒已关闭"
End Sub
修改Module1中的提醒宏: 我们需要一个新的宏来显示这个UserForm。
'========================================
' 模块:Module1 (再次修改)
' 功能:使用UserForm进行提醒
'========================================
Option Explicit
' 全局变量,用于存储下一次提醒的时间,以便精确取消
Public NextReminderTime As Date
' 1. 这是实际会执行的提醒内容(显示UserForm)
Sub ShowCustomReminder()
' 设置UserForm的提醒内容
= "您有一个重要的会议将在30分钟后开始!请做好准备。"
' 显示UserForm
' 核心:如果需要重复提醒,且没有“我知道了”按钮阻止,则再次设置
' 这里不直接设置重复,因为UserForm的“小睡”按钮会负责重新安排。
' 如果UserForm关闭后还想重复,可以在UserForm的 QueryClose 事件中处理。
' 为了简化,我们暂时让“小睡”按钮控制下一次提醒。
End Sub
' 2. 这是用来启动自定义提醒的宏
Sub StartCustomReminderTimer()
' 首次设置提醒,例如15秒后第一次提醒
NextReminderTime = Now + TimeValue("00:00:15")
EarliestTime:=NextReminderTime, Procedure:="ShowCustomReminder"
MsgBox "自定义定时提醒已设置,15秒后将弹出窗体。", vbOKOnly, "自定义提醒设置成功"
End Sub
' 3. 这是用来取消自定义提醒的宏
Sub CancelCustomReminderTimer()
If NextReminderTime > 0 Then
On Error Resume Next ' 忽略可能出现的错误,例如如果OnTime已经执行
EarliestTime:=NextReminderTime, Procedure:="ShowCustomReminder", Schedule:=False
On Error GoTo 0
MsgBox "所有自定义定时提醒已取消。", vbOKOnly, "取消成功"
NextReminderTime = 0
Else
MsgBox "目前没有正在运行的自定义定时提醒。", vbExclamation, "无提醒"
End If
End Sub
现在,运行 `StartCustomReminderTimer` 宏,15秒后会弹出一个漂亮的自定义提醒窗体。你可以点击“小睡”让它5分钟后再次出现,或者点击“我知道了”直接关闭。
第四步:更智能的提醒管理——从工作表读取提醒事项
硬编码提醒内容不够灵活,我们通常希望在一个工作表中管理所有的提醒事项,比如:提醒时间、提醒内容、是否已完成等。
假设我们有一个名为“提醒事项”的工作表,包含三列:A列为“提醒时间”,B列为“提醒内容”,C列为“是否已设置”(方便我们跟踪)。
工作表设置:
新建工作表: 将其命名为“提醒事项”。
设置表头: A1输入“提醒时间”,B1输入“提醒内容”。
输入示例数据:
提醒时间 (A列)
提醒内容 (B列)
`2023/10/26 10:00:00` (实际操作时输入 `10:00` 或 `10:00:00`)
检查日报提交情况
`2023/10/26 14:30:00`
与王总沟通项目进展
`16:00:00` (每天下午4点提醒)
撰写周报
(注意:时间格式要正确,Excel能识别。对于每天提醒,只需输入时间部分。)
修改Module1中的代码:
'========================================
' 模块:Module1 (最终版)
' 功能:从工作表读取并管理提醒事项
'========================================
Option Explicit
' 全局变量,用于存储下一个提醒的EarliestTime,方便取消
Public NextScheduledOnTime As Date
' 全局变量,用于存储下一个提醒的Procedure名称
Public NextScheduledProcedure As String
' 宏:根据工作表设置下一个提醒
Sub SetNextReminderFromSheet()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim reminderTime As Date
Dim reminderContent As String
Dim nextReminderTimeCandidate As Date
Dim nextReminderRow As Long
Set ws = ("提醒事项")
lastRow = (, "A").End(xlUp).Row
' 初始化下一个提醒时间和行号
nextReminderTimeCandidate = Now + 365 ' 设置一个很远的未来时间,确保能找到最近的提醒
nextReminderRow = 0
' 遍历提醒事项,找到最接近当前时间的、且尚未发生的提醒
For i = 2 To lastRow ' 从第二行开始(跳过表头)
reminderTime = (i, "A").Value
reminderContent = (i, "B").Value
' 确保时间是有效的日期时间格式
If IsDate(reminderTime) Then
Dim scheduledTime As Date
' 处理只输入时间的情况(每天提醒)
If CDate(reminderTime) < 1 Then ' 如果只输入了时间部分(如10:00:00,其DateValue为0)
scheduledTime = Date + reminderTime ' 将其与今天的日期结合
Else ' 如果输入了完整的日期时间
scheduledTime = reminderTime
End If
' 如果这个提醒时间已过,且是今天的任务(而不是每日任务),则跳过
If scheduledTime < Now And DateValue(scheduledTime) = DateValue(Now) And CDate(reminderTime) >= 1 Then
' 对于今天已过的日期时间,不予处理
GoTo NextItem
End If
' 如果是每日提醒,但今天的这个时间已过,则安排在明天
If scheduledTime < Now And CDate(reminderTime) < 1 Then
scheduledTime = Date + 1 + CDate(reminderTime) ' 安排到明天
End If
' 找到最近的未来提醒
If scheduledTime > Now And scheduledTime < nextReminderTimeCandidate Then
nextReminderTimeCandidate = scheduledTime
nextReminderRow = i
End If
End If
NextItem:
Next i
' 如果找到了有效的下一个提醒
If nextReminderRow > 0 Then
reminderContent = (nextReminderRow, "B").Value
' 确保取消掉之前可能存在的定时器
If NextScheduledOnTime > 0 Then
On Error Resume Next
EarliestTime:=NextScheduledOnTime, Procedure:=NextScheduledProcedure, Schedule:=False
On Error GoTo 0
End If
' 存储下一次要安排的EarliestTime和Procedure,以便后续取消
NextScheduledOnTime = nextReminderTimeCandidate
NextScheduledProcedure = "TriggerCustomReminder" ' 我们将调用这个新的宏
' 安排新的定时提醒
EarliestTime:=NextScheduledOnTime, Procedure:=NextScheduledProcedure
MsgBox "已成功设置下一个提醒任务:'" & reminderContent & "',将于 " & Format(NextScheduledOnTime, "yyyy-mm-dd hh:mm:ss") & " 触发。", vbInformation, "提醒已安排"
Else
MsgBox "没有找到未来需要提醒的任务。", vbInformation, "无任务"
' 如果没有找到,也要取消掉可能存在的旧定时器
If NextScheduledOnTime > 0 Then
On Error Resume Next
EarliestTime:=NextScheduledOnTime, Procedure:=NextScheduledProcedure, Schedule:=False
On Error GoTo 0
End If
NextScheduledOnTime = 0
NextScheduledProcedure = ""
End If
End Sub
' 宏:触发自定义提醒(当 到达时间时调用)
Sub TriggerCustomReminder()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim reminderTime As Date
Dim reminderContent As String
Dim triggeredContent As String ' 实际触发的提醒内容
Dim currentReminderRow As Long ' 实际触发的提醒行
Set ws = ("提醒事项")
lastRow = (, "A").End(xlUp).Row
' 找到是哪一行提醒触发了
For i = 2 To lastRow
reminderTime = (i, "A").Value
' 处理只输入时间的情况(每天提醒)
If CDate(reminderTime) < 1 Then
reminderTime = Date + CDate(reminderTime)
End If
' 比较触发时间(忽略秒的微小差异)
If Abs(reminderTime - NextScheduledOnTime) < TimeValue("00:00:01") Then
triggeredContent = (i, "B").Value
currentReminderRow = i
Exit For
End If
Next i
' 显示自定义UserForm
If triggeredContent "" Then
= triggeredContent
vbModal ' 以模态方式显示,用户必须处理
' 如果是每日提醒,需要重新安排下一次(明天的)提醒
Dim originalReminderTime As Date
originalReminderTime = (currentReminderRow, "A").Value
If CDate(originalReminderTime) < 1 Then ' 如果是每日提醒
(currentReminderRow, "A").Value = Date + 1 + CDate(originalReminderTime) ' 将工作表中的时间更新为明天
End If
' 提醒处理完毕后,再次设置下一个提醒
Call SetNextReminderFromSheet
Else
MsgBox "提醒触发,但未找到匹配的提醒内容。", vbExclamation, "错误"
' 即使出错,也尝试设置下一个提醒,防止死循环
Call SetNextReminderFromSheet
End If
End Sub
' 宏:取消所有已安排的定时提醒
Sub CancelAllReminders()
If NextScheduledOnTime > 0 Then
On Error Resume Next
EarliestTime:=NextScheduledOnTime, Procedure:=NextScheduledProcedure, Schedule:=False
On Error GoTo 0
NextScheduledOnTime = 0
NextScheduledProcedure = ""
MsgBox "所有定时提醒已取消。", vbOKOnly, "取消成功"
Else
MsgBox "目前没有正在运行的定时提醒。", vbExclamation, "无提醒"
End If
End Sub
修改 `ThisWorkbook` 中的 `Workbook_Open` 事件:
'========================================
' 对象:ThisWorkbook (修改)
' 功能:工作簿打开时自动启动提醒管理
'========================================
Option Explicit
Private Sub Workbook_Open()
' 在工作簿打开时,从工作表设置第一个提醒
Call SetNextReminderFromSheet
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' 在工作簿关闭前,取消所有未触发的定时提醒,避免错误
Call CancelAllReminders
End Sub
现在,当你打开工作簿时,VBA会自动扫描“提醒事项”工作表,找到最接近的未来提醒并设置。当提醒触发时,会弹出自定义UserForm。如果提醒是每日的,VBA还会将工作表中的时间更新到次日,确保循环提醒。
VBA定时提醒的注意事项与最佳实践:
保存宏的工作簿: 你的Excel文件必须保存为 `.xlsm`(启用宏的工作簿),否则宏代码将丢失。
启用宏: 打开包含VBA宏的Excel文件时,你可能会看到安全警告。请务必选择“启用内容”或“启用宏”。如果宏被禁用,定时提醒将无法工作。
取消旧的定时器: 在设置新的 `` 任务之前,尤其是在重复任务中,务必取消之前已安排但尚未执行的同名任务。通过保存 `EarliestTime` 和 `Procedure` 到全局变量是推荐的做法。
错误处理: 在关键代码段使用 `On Error Resume Next` 或 `On Error GoTo` 进行错误处理,可以增加代码的健壮性,防止程序意外崩溃。
UserForm的模态显示: ` vbModal` 会让用户必须处理提醒窗体才能继续操作Excel。` vbModeless` 则允许用户在提醒弹出的同时继续操作Excel(但要小心,如果用户关闭Excel,UserForm可能还在后台)。
优化“提醒事项”表:
可以添加一列“是否激活”,控制提醒是否生效。
添加“重复周期”(例如:每天、每周、每月),实现更复杂的重复逻辑。
添加“已提醒次数”或“下次提醒时间”,便于跟踪。
`Workbook_BeforeClose`: 在工作簿关闭前,调用 `CancelAllReminders` 是一个非常好的习惯,它能确保在Excel关闭时,所有未触发的 `OnTime` 任务都被清理掉,避免在下次打开时可能出现的意外行为或报错。
系统时间: `` 是基于系统时间工作的,如果系统时间被修改,提醒的准确性会受到影响。
通过本文,我们从 `` 的基础用法开始,一步步构建了一个功能强大的Excel VBA定时提醒系统。它不仅能自动启动、周期性提醒,还能通过自定义UserForm提供友好的交互,并从工作表中动态读取提醒事项。
掌握了这些技巧,你就可以将Excel打造成你的专属智能工作闹钟,无论是工作日程、休息提醒、数据更新提示,甚至是个人生活的小备忘,都能轻松搞定,让你告别遗忘,工作效率倍增!
快去动手尝试吧!VBA的乐趣就在于,你可以将自己的想法变成现实,让Excel真正成为你的得力助手。
如果你在实践过程中遇到任何问题,或者有更好的想法和建议,欢迎在评论区留言交流!我们下期再见!
2025-10-07

告别拖延与遗忘:精选智能闹铃、定时、提醒APP,让你的生活井井有条!
https://www.weitishi.com/remind/124148.html

配股提醒短信?别慌!一文吃透配股,掌握你的投资主动权!
https://www.weitishi.com/remind/124147.html

小米手机提醒事项全攻略:告别健忘,效率翻倍!
https://www.weitishi.com/remind/124146.html

短信天气预警:掌上安心守护,智慧生活必备!
https://www.weitishi.com/remind/124145.html

智能语音出门提醒器:告别遗忘,轻松出门的秘密武器
https://www.weitishi.com/remind/124144.html
热门文章

微信双开通知无声音提醒?手把手教你开启,不错过重要消息!
https://www.weitishi.com/remind/23592.html

快递总是没有短信提醒?教你4招,从此告别错过包裹
https://www.weitishi.com/remind/26507.html

高德导航设置提醒功能,轻松无忧出行
https://www.weitishi.com/remind/16680.html

联通卡总收到短信提醒?教你一步步解决
https://www.weitishi.com/remind/51189.html

农信短信提醒扣费吗?揭秘背后的真相
https://www.weitishi.com/remind/14719.html