VBA实现毫秒级延时(2022最新版)

这篇具有很好参考价值的文章主要介绍了VBA实现毫秒级延时(2022最新版)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

要不是年会需要使用PPT来做抽奖,我才不会用这么难用的VBA。

VBA要实现延时功能,大多数教程都会拿2016年ExcelHome里的上古帖子不厌其烦地复制粘贴,然后你复制下来发现根本无法运行。

现在我从头给你讲,到底怎样在VBA中实现毫秒级延时功能。

思路

思路很清晰,分三步走:

1. 想办法获取当前时间(time_now1)

2. 然后给这个时间加上一个数delay_time(这个数就是你要定时的时长)得到time_then

3. 然后做循环,当再次获取当前时间(time_now2)等于time_then的时候跳出循环。并且注意这个时候最好不要使用独占CPU的浪费计算资源的方法。

布局

用一个CommandButton1按钮控件和一个Label1文本控件,在PPT中直观展示怎样实现延时功能。

VBA实现毫秒级延时(2022最新版)

代码

Private Declare PtrSafe Function timeGetTime Lib "winmm.dll" () As Long
Private Sub CommandButton1_Click()
Dim Savetime As Double
Label1.Caption = "点击开始计时"
Savetime = timeGetTime
While timeGetTime < Savetime + 500
DoEvents
Wend
Label1.Caption = "延时时间到"
End Sub

代码解析

1. 先看第一句话:

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

第一句话是很关键的内容,但Declare是上古时代的VBA语句,现在已经不推荐单独用了。需要在其后面加上PtrSafe关键字。具体参考:Declare 语句 (VBA) | Microsoft Docs了解如何使用 Declare 语句 (VBA)https://docs.microsoft.com/zh-cn/office/vba/Language/reference/user-interface-help/declare-statement

这句话的功能就是,将winmn.dll这个系统DLL文件中的timeGetTime拎出来,方便后面使用,并且声明为Long型变量。

2. 再看第二段话:

Private Sub CommandButton1_Click()
Dim Savetime As Double
Label1.Caption = "点击开始计时"
Savetime = timeGetTime
While timeGetTime < Savetime + 500
DoEvents
Wend
Label1.Caption = "延时时间到"
End Sub

Sub...End Sub经典的事件处理函数,CommandButton1是上面拖拽过来的Button控件,CommandButton1_Click()是单击Button控件后的动作。

在动作里,首先定义了Double型的临时变量Savetime,用于暂存按钮按下的时间信息,也即Savetime = timeGetTime

然后做个While...Wend循环,在这个循环里执行DoEvents函数,注意这个函数是CPU资源友好型函数,功能是交出执行控制权,以便操作系统能够处理其他事件。具体参考:

DoEvents 函数 (Visual Basic for Applications) | Microsoft DocsOffice VBA reference topichttps://docs.microsoft.com/zh-cn/office/vba/language/reference/user-interface-help/doevents-function跳出循环的方法就是获取到的当前时间等于或大于Savetime + 500的值,从而实现了定时。

刚刚跳过的关于Label1.Caption = "XXX"的两行代码,只是为了直观展示函数运行状态,不展开讲了。

总结

做到延时,需要靠“三步走”的方法实现,同时也要注意用DoEvent函数避免CPU资源浪费。用的时候,直接复制代码,把500换成想要的毫秒数即可。文章来源地址https://www.toymoban.com/news/detail-469643.html

到了这里,关于VBA实现毫秒级延时(2022最新版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VS2022配置QT6.4.3的详细步骤(2023年最新版安装教程)

         本文包含了 QT在线安装器的安装过程,QT的安装过程,QT的环境配置,VS的环境配置 QT在线安装器的百度云资源 希望可以帮助大家解决安装过程中出现的各种问题。         前些天,听完了C++的基础课程想下载个QT学一下前端操作,但是在安装的时候却出现了一些问题,

    2023年04月26日
    浏览(59)
  • 【Pycharm2022.2.1】python编辑器最新版安装教程(包含2017-2022的所有版本win/mac/linux)

    前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 永久安装 Pycharm(2017-2022的win/mac/linux所有版本)/ IntelliJ IDEA也可以, 按照本文教程所写的,具体步骤跟着下面的图文教程一步一步来就行,一分钟即可搞定,过程也非常简单。 第一步 下载pycharm安装包 官网下载链接如: 官网下载 嫌慢的

    2024年02月14日
    浏览(71)
  • 在visual studio 2022 C++中配置最新版OpenCV和可能错误解决方案

    前面我们写了一篇博文有关在C#中配置OpenCV,但C#版本的OpenCV的学习资源相对较少,C++版的和Python版的比较多。这里先说说C++版的如何配置吧!总共完成四步即可使用起来。 文章原出处: https://blog.csdn.net/haigear/article/details/129617330 我们来到官网,最新版截止到22年12月的4.7,无

    2024年02月05日
    浏览(67)
  • 微信小程序新版隐私协议弹窗实现最新版

    2023.08.22更新:【原文连接】 以下指南中涉及的 getPrivacySetting、onNeedPrivacyAuthorization、requirePrivacyAuthorize 等接口目前可以正常接入调试。调试说明: 在 2023年9月15号之前,在 app.json 中配置 __usePrivacyCheck__: true 后,会启用隐私相关功能,如果不配置或者配置为 false 则不会启用。

    2024年02月10日
    浏览(79)
  • 下载最新版 VC_redist.x86.exe / VC_redist.x64.exe for Visual Studio 2015, 2017, 2019, and 2022

    目录 1、如何处理程序需要的C/C++运行时库? 2、VC_redist.x64.exe的主界面以及支持的命令行参数

    2024年02月11日
    浏览(57)
  • Android实现简单的登陆页面(最新版2023详细图文教程

    目录   1.打开android studio软件  2.新建empty activity 3.看个人配置填(finish)  4.左侧找到res-layout(页面布局)  5.先设置页面布局,这里采用线性布局  7.设置头文本    --文本展示标签  8.用户名与密码--可编辑文本标签 9.提交按钮 10.整体代码 LinearLayout xmlns:android=\\\"http://schemas.an

    2024年02月16日
    浏览(64)
  • 使用ChatGPT最新版实现批量写作,打造丰富多彩的聚合文章

    随着人工智能的迅猛发展,ChatGPT最新版作为一种自然语言处理模型,可以为我们提供强大的文本生成能力。在这篇文章中,我们将探讨如何利用ChatGPT最新版来实现批量写作,从而打造丰富多彩的聚合文章。 一、ChatGPT最新版简介 ChatGPT最新版是由OpenAI开发的一种基于大规模预

    2024年02月09日
    浏览(50)
  • Spring Security6 最新版配置该怎么写,该如何实现动态权限管理

    Spring Security 在最近几个版本中配置的写法都有一些变化,很多常见的方法都废弃了,并且将在未来的 Spring Security7 中移除,因此又补充了一些新的内容,重新发一下,供各位使用 Spring Security 的小伙伴们参考。 接下来,我把从 Spring Security5.7 开始(对应 Spring Boot2.7 开始),各

    2024年02月12日
    浏览(45)
  • 2023.7月最新版idea安装Jrebel实现热部署,可解决后端启动等待时间过长问题

    激活方式多种多样,我采取的是方式一在线获取, 第二种方式是下载破解版的jrebel包,然后解压,将.lic结尾路径添加进去 第三种方式应该是获取激活码了 1、安装JRebel插件后,注册地址填写网址 + 生成的GUID,邮箱随便填写,然后即可。 http://jrebel-license.jiweichengzhu.com/{GUID}

    2024年02月15日
    浏览(83)
  • 利用Python中selenium库爬虫实现中国裁判文书网自动登录批量下载功能——最新版详细教程!!

    如果电脑上没有chrome浏览器或者当前chrome浏览器不是最新版,请先去chrome官网下载安装最新版chrome浏览器 https://www.google.cn/chrome/index.html 什么是ChromeDriver ChromeDriver是一种用于自动化和控制Google Chrome浏览器的工具。它是一个开源的项目,由Google维护,并提供给开发者使用。Ch

    2024年02月04日
    浏览(118)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包