大家好,我们今日继续讲解VBA代码解决方案的第82讲内容:如何利用代码让程序延时,SLEEP函数和timeGetTime函数两个API函数的讲解。

在上一讲中我们讲了使用Wait方法,但这种方法的不足是只能提供精度为1秒的延时,如果需要更低精度的延时,需要使用Sleep API函数,如下面的代码所示。

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub MyTypeDemo()

Dim sTest As String

Dim i As Integer

sTest = "欢迎你来到这个平台学习VBA!"

For i = 1 To Len(sTest)

Range("A1").Value = Left(sTest, i)

Sleep 200

Next

End Sub

代码解析:

MyTypeDemo过程模拟打字效果在单元格A1中输入一行文字。"欢迎你来到这个平台学习VBA!"

第1行代码Sleep API函数声明,参数dwMilliseconds为以毫秒为单位的时间长度。

在第6行到第9行代码在每次循环时增加显示的数据,并且在每次增加时使用Sleep语句延时200毫秒,好像字符逐个输入,从而达到模拟打字的效果.

在上面的实例中,对于精确延时使用的sleep函数,使用这个函数要注意的是,由于这个函数是Windows API函数,使用前必须先声明,然后使用。 虽然sleep函数延时是毫秒级的,精确度比较高,但它在延时时会将程序挂起,使操作系统暂时无法响应用户操作,所以在长延时的时候不适合使用它。

更好的办法是使用timeGetTime函数,timeGetTime函数返回的是开机到现在的毫秒数,可以支持1毫秒的间隔时间,而且永远增加,不存在回头的问题。当然不是永远不回头,毕竟Long型变量(双字,4字节)也是有取值范围的,这个值在0到2^32之间。大约49.71天。

同sleep函数一样,timeGetTime函数是Windows API函数,使用前必须先声明,即:

Private Declare Function timeGetTime Lib "winmm.dll" () As Long

延时函数和上面的一样,只是将sleep函数换成timeGetTime:

Private Declare Function timeGetTime Lib "winmm.dll" () As Long

Sub S_timeGetTime()

Dim time1 As Long

time1 = timeGetTime

Range("A2").Value = timeGetTime

Do

Range("A3").Value = timeGetTime

DoEvents

Loop While timeGetTime - time1 < 1000

MsgBox "时间到!"

End Sub

注意:延时时间单位是毫秒。由于延时函数中使用了 DoEvents语句交出了系统控制权,所以不会影响用户的其它操作。

代码截图:

运行:

今日内容回向:

1 如何实现程序的延时呢?

2 本节讲了两种延时的方式,是否理解呢/

欢迎到我的自媒体平台沟通交流:个人微信号“NZ9668”、头条号“VBA专家”、百家号“VBA与GO语言”、微信公众号“NZ_9668”、社群“VBA学习交流群”。

这一系列文章是根据我多年的工作经验编写的,也是一直在利用的工具,非常方便好用。现在分享出来,希望能对同样在职场打拼的朋友有些许的帮助,使你的工作更加高效、流畅。朋友们有问题请随时提出来,我们一起探讨学习。对数据分析有需要的公司、组织或个人可以直接联系我,及时为你提供专业的定制技术支持。

工作不是一切。工作是每个人安身立命、成长发展的基础。但你要知道工作是永远也做不完的,时间会抹去很多问题。多关注自己、家人和朋友,这些才是我们生活中更为重要的东西。

sleep函数_VBA代码方案82:如何利用代码让程序延时,SLEEP和timeGetTime及两个API函数讲解...相关推荐

  1. 利用爬虫有道词典进行翻译python3中的内置函数属性功能

    from urllib import request from urllib import parse import json import time import random import has ...

  2. Win32 API 函数列表

    ID编号 函数名 函数说明 详细说明 Win16支持 Win9x支持 WinNT支持 1 AbortDoc 终止一项打印作业  Yes Yes Yes 2 AbortPath 终止或取消DC中的一切路 ...

  3. Win32 API 函数列表1(格式有点乱)

    西安邮电学院 徐兆元 ID编号 函数名 函数说明 详细说明 Win16支持 Win9x支持 WinNT支持 1 AbortDoc 终止一项打印作业  Yes Yes Yes 2 AbortPath 终 ...

  4. 恶意代码分析实战 11 恶意代码的网络特征

    11.1 Lab14-01 问题 恶意代码使用了哪些网络库?它们的优势是什么? 使用WireShark进行动态分析. 使用另外的机器进行分析对比可知,User-Agent不是硬编码. 请求的URL值得 ...

  5. 基于API函数的串口通信(方法讲解)

    用到的串口通信编程方法有:使用通信控件.在高级语言中嵌入汇编以及使用API函数.在这几种方法中,使用API函数编写的串口通信程序最为高效.灵活.串口通信编程将用到三种API函数 --串口通信相关API ...

  6. window下键盘监控api函数详解

    在实际应用中,键盘监控是一种很常见的技术,它包括按键的记录.按键的过滤.按键的修改(映射)等.比方说,我们想统计用户的击键情况,这个就是按键的记录:我们想屏蔽某些系统键(例如Alt键.Win键),这个 ...

  7. c#调用win32 API函数修改系统时间

    一般来说,系统时间的修改可以通过win32 API函数库中的SetLocalTime函数进行设置.对于C#语言来说,虽然win32 API大部分函数都已经封装在了.NET Framework类库中,但 ...

  8. linux查看进程调用接口,查看某个程序都调用哪些api函数

    查看某个程序都调用哪些api函数以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 查看某个程序都调用哪些api函数 vs6 ...

  9. API函数ShellExecute与ShellExecuteEx用法

    ShellExecute: 1.函数功能: 你可以给它任何文件的名字,它都能识别出来并打开它. 2.函数原型: HINSTANCE ShellExecute( HWND hwnd, LPCTSTR l ...

最新文章

  1. Vivado IP核的综合模式:Global以及Out of context的区别理解
  2. USACO1.1 Broken Necklace (beads)
  3. 整理一些sql server基础资料
  4. C#笔记2__Char类、String类、StringBuilder类 / 正则表达式 /
  5. django ForeignKey的使用
  6. 大数据风控之贷前调查必知的十大客户信息
  7. 惠普服务器显示灯闪红灯,惠普打印机指示灯闪烁什么意思? 惠普2130打印机故障灯大全图解...
  8. pom 的第三方jar报错_01_maven-将第三方jar包一起打包到项目 jar 包中
  9. Django 数据导入和导出
  10. android 动态壁纸
  11. tableau 倒序都倒了_tableau 网络图与弧线图绘制
  12. Java 8 (5) Stream 流 - 收集数据
  13. mysql运维基础_mysql基础运维
  14. 基于 OPC 规范的客户应用程序实现
  15. linux 安装mysql 云盘_linux下 安装mysql教程
  16. Jupyter Notebook的使用02—两种模式的快捷操作
  17. 批量自动付款(京东)
  18. 【Servlet:Java Web服务器】JSP 基本知识点与总结 (思维导图)
  19. 如何基于HTTP设计一个加密解密系统
  20. 模态综合医疗时间序列数据:REAL-VALUED (MEDICAL) TIME SERIES GENERATION WITH RECURRENT CONDITIONAL GANS

热门文章

  1. 【游戏交互设计】希克法则:多“项”维度下的化繁为简
  2. 爬取寻梦环游记的评论生成词云
  3. 网络硬件补充知识汇总
  4. 13G编程电子书开始提供BT下载,下载说明及BT种子下载网址
  5. int与char[]的相互转换
  6. 程序员:报警快把我折腾疯了
  7. LCS 两种常规DP思路
  8. C语言字符数组赋值问题
  9. Android 中使用自定义ttf字体实现酷炫效果
  10. Orange pi GPIO输出控制,裸机点灯大法(一)!