sleep函数_VBA代码方案82:如何利用代码让程序延时,SLEEP和timeGetTime及两个API函数讲解...
![](/assets/blank.gif)
大家好,我们今日继续讲解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语句交出了系统控制权,所以不会影响用户的其它操作。
代码截图:
![](/assets/blank.gif)
![](/assets/blank.gif)
运行:
![](/assets/blank.gif)
![](/assets/blank.gif)
今日内容回向:
1 如何实现程序的延时呢?
2 本节讲了两种延时的方式,是否理解呢/
欢迎到我的自媒体平台沟通交流:个人微信号“NZ9668”、头条号“VBA专家”、百家号“VBA与GO语言”、微信公众号“NZ_9668”、社群“VBA学习交流群”。
这一系列文章是根据我多年的工作经验编写的,也是一直在利用的工具,非常方便好用。现在分享出来,希望能对同样在职场打拼的朋友有些许的帮助,使你的工作更加高效、流畅。朋友们有问题请随时提出来,我们一起探讨学习。对数据分析有需要的公司、组织或个人可以直接联系我,及时为你提供专业的定制技术支持。
工作不是一切。工作是每个人安身立命、成长发展的基础。但你要知道工作是永远也做不完的,时间会抹去很多问题。多关注自己、家人和朋友,这些才是我们生活中更为重要的东西。
sleep函数_VBA代码方案82:如何利用代码让程序延时,SLEEP和timeGetTime及两个API函数讲解...相关推荐
- 利用爬虫有道词典进行翻译python3中的内置函数属性功能
from urllib import request from urllib import parse import json import time import random import has ...
- Win32 API 函数列表
ID编号 函数名 函数说明 详细说明 Win16支持 Win9x支持 WinNT支持 1 AbortDoc 终止一项打印作业 Yes Yes Yes 2 AbortPath 终止或取消DC中的一切路 ...
- Win32 API 函数列表1(格式有点乱)
西安邮电学院 徐兆元 ID编号 函数名 函数说明 详细说明 Win16支持 Win9x支持 WinNT支持 1 AbortDoc 终止一项打印作业 Yes Yes Yes 2 AbortPath 终 ...
- 恶意代码分析实战 11 恶意代码的网络特征
11.1 Lab14-01 问题 恶意代码使用了哪些网络库?它们的优势是什么? 使用WireShark进行动态分析. 使用另外的机器进行分析对比可知,User-Agent不是硬编码. 请求的URL值得 ...
- 基于API函数的串口通信(方法讲解)
用到的串口通信编程方法有:使用通信控件.在高级语言中嵌入汇编以及使用API函数.在这几种方法中,使用API函数编写的串口通信程序最为高效.灵活.串口通信编程将用到三种API函数 --串口通信相关API ...
- window下键盘监控api函数详解
在实际应用中,键盘监控是一种很常见的技术,它包括按键的记录.按键的过滤.按键的修改(映射)等.比方说,我们想统计用户的击键情况,这个就是按键的记录:我们想屏蔽某些系统键(例如Alt键.Win键),这个 ...
- c#调用win32 API函数修改系统时间
一般来说,系统时间的修改可以通过win32 API函数库中的SetLocalTime函数进行设置.对于C#语言来说,虽然win32 API大部分函数都已经封装在了.NET Framework类库中,但 ...
- linux查看进程调用接口,查看某个程序都调用哪些api函数
查看某个程序都调用哪些api函数以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 查看某个程序都调用哪些api函数 vs6 ...
- API函数ShellExecute与ShellExecuteEx用法
ShellExecute: 1.函数功能: 你可以给它任何文件的名字,它都能识别出来并打开它. 2.函数原型: HINSTANCE ShellExecute( HWND hwnd, LPCTSTR l ...
最新文章
- Vivado IP核的综合模式:Global以及Out of context的区别理解
- USACO1.1 Broken Necklace (beads)
- 整理一些sql server基础资料
- C#笔记2__Char类、String类、StringBuilder类 / 正则表达式 /
- django ForeignKey的使用
- 大数据风控之贷前调查必知的十大客户信息
- 惠普服务器显示灯闪红灯,惠普打印机指示灯闪烁什么意思? 惠普2130打印机故障灯大全图解...
- pom 的第三方jar报错_01_maven-将第三方jar包一起打包到项目 jar 包中
- Django 数据导入和导出
- android 动态壁纸
- tableau 倒序都倒了_tableau 网络图与弧线图绘制
- Java 8 (5) Stream 流 - 收集数据
- mysql运维基础_mysql基础运维
- 基于 OPC 规范的客户应用程序实现
- linux 安装mysql 云盘_linux下 安装mysql教程
- Jupyter Notebook的使用02—两种模式的快捷操作
- 批量自动付款(京东)
- 【Servlet:Java Web服务器】JSP 基本知识点与总结 (思维导图)
- 如何基于HTTP设计一个加密解密系统
- 模态综合医疗时间序列数据:REAL-VALUED (MEDICAL) TIME SERIES GENERATION WITH RECURRENT CONDITIONAL GANS