ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何用vba代码为指定内容在设定时间到达前10分钟及5分钟进行语音及视觉提醒?

如何用vba代码为指定内容在设定时间到达前10分钟及5分钟进行语音及视觉提醒?

作者:绿色风 分类: 时间:2022-08-17 浏览:90
楼主
kevinchengcw
Q: 如何用vba代码为指定内容在设定时间到达前10分钟及5分钟进行语音及视觉提醒?
A: 代码如下:(运行电脑需要安装语音阅读引擎)
  1. Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)  '声明sleep函数,用于后面的延时操作

  2. Sub test()
  3. Dim Rng As Range, R1 As Range, R2 As Range, Str$, Str2$, N&
  4. Str = ""  '初始化记录内容的变量为空
  5. Str2 = ""
  6. For Each Rng In Range([a4], Cells(Rows.Count, 1).End(3))   '循环单元格指定区域
  7.     If Hour(Rng.Offset(, 2).Value) * 60 + Minute(Rng.Offset(, 2).Value) - Hour(Now) * 60 - Minute(Now) = 10 Then  '判断对应列设定时间与当前时间的差值为10分钟,则
  8.         Str = Str & Rng.Value & " "  '利用空格分隔将符合10分钟标准的内容串接起来
  9.         If R1 Is Nothing Then  '并将对应的单元格赋值给变量
  10.             Set R1 = Rng
  11.         Else
  12.             Set R1 = Union(R1, Rng)
  13.         End If
  14.     ElseIf Hour(Rng.Offset(, 2).Value) * 60 + Minute(Rng.Offset(, 2).Value) - Hour(Now) * 60 - Minute(Now) = 5 Then   '对于符合5分钟标准的单元格操作同上
  15.         Str2 = Str2 & Rng.Value & " "
  16.         If R2 Is Nothing Then
  17.             Set R2 = Rng
  18.         Else
  19.             Set R2 = Union(R2, Rng)
  20.         End If
  21.     End If
  22. Next Rng
  23. If Trim(Str2) <> "" Then Str2 = Str2 & "还有5分钟即将上线"  '判断取得是数据是否有效,有效则串接上提示语句
  24. If Trim(Str) <> "" Then Str = Str & "还有10分钟即将上线"
  25. If Trim(Str) <> "" Or Trim(Str2) <> "" Then
  26.     Str = "请注意 " & Trim(Str2) & " " & Trim(Str)   '最后将有效数据完全串接在一起,以实现一次性发音读出
  27.     For N = 1 To 3  '循环读出三次,以达到提示效果
  28.         Application.Speech.Speak Str
  29.     Next N
  30.     For N = 1 To 100   '语音提示完成后,利用单元格变色实现视觉提醒功能(闪烁50次)
  31.         If N Mod 2 = 0 Then  '变量是偶数时清除单元格颜色
  32.             If Not R1 Is Nothing Then R1.Interior.ColorIndex = xlNone
  33.             If Not R2 Is Nothing Then R2.Interior.ColorIndex = xlNone
  34.         Else   '奇数时,差10分钟的单元格显示黄色,差5分钟的单元格显示红色
  35.             If Not R1 Is Nothing Then R1.Interior.Color = vbYellow
  36.             If Not R2 Is Nothing Then R2.Interior.Color = vbRed
  37.         End If
  38.         Sleep (100)  '延时0.1秒进入下一次循环
  39.     Next N
  40. End If
  41. Application.OnTime Now + TimeValue("00:00:20"), "test"  '每20秒调用一次本程序(具体时间可根据精度等要求进行调整)
  42. End Sub
详见附件及素材源帖.
提前语音及视觉提醒.rar
2楼
yg5chai9z
无私是稀有的道德,因为从它身上是无利可图的。
3楼
传递
VBA 太强大了
4楼
sharkzhou
怎样弄语音阅读引擎啊?谢谢

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap