如何让VBA宏在后台持续运行?

2023-12-22

我想监视一个值并在满足某些条件时收到电子邮件通知。我有一个像这样的宏:

Do While True

    Worksheet.Calculate

    If Value > 10 Then
        SendEmail
    End If

    Sleep 60*CLng(1000)

Loop

但是,当我运行它时,它会阻塞整个程序,并且如果我尝试执行任何操作,它就会变得无响应。

无论如何,有没有办法实现这一点,但让它在后台运行,或者至少不会使程序崩溃?

我之前所做的是使用 VBScript 打开一个不可见的电子表格,VBScript 在后台连续运行,监视状况并且工作正常,但我的客户确实想要一个 GUI,并将其包含在程序本身中。

有什么想法吗?


Use the Application.OnTime方法来安排将在一分钟内运行的代码。

您的代码将如下所示(未经测试):

Sub CreateNewSchedule()
    Application.OnTime EarliestTime:=DateAdd("n", 1, Now), Procedure:="macro_name", Schedule:=True
End Sub

Sub macro_name()

    If Value > 10 Then
        SendEmail
    Else
        CreateNewSchedule
    End If

End Sub

您可能希望将下一个计划的时间存储在全局变量中,以便Workbook_BeforeClose活动可以取消下一个日程。否则 Excel 将重新打开工作簿。

Public nextScheduledTime As Date

Sub CreateNewSchedule()
    nextScheduledTime  = DateAdd("n", 1, Now)
    Application.OnTime EarliestTime:=nextScheduledTime , Procedure:="macro_name", Schedule:=True
End Sub

Sub macro_name()

    If Value > 10 Then
        SendEmail
    Else
        CreateNewSchedule
    End If

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
    Application.OnTime EarliestTime:=nextScheduledTime, Procedure:="macro_name", Schedule:=False
End Sub

然后,您可以在预定时间之间继续使用 Excel。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让VBA宏在后台持续运行? 的相关文章

  • java代码的等效vb代码

    谁能告诉我这段Java代码到底做了什么 SecureRandom random SecureRandom getInstance SHA1PRNG byte bytes new byte 20 synchronized random ran
  • Excel VBA 循环遍历 10,000 组行,每组包含 20 行

    如何将当前按行循环的 Excel VBA 代码转换为循环 20 行集 据我了解 Step函数可能与以下行一起使用 Range V1 Value Application Index vInput1 r 0 但是 我不确定如何修改代码以循环遍历
  • 访问应用程序,带有表单任务栏图标的隐藏应用程序窗口

    我有一个带有一个主表单的访问应用程序 当您打开应用程序时 AutoExec 宏会通过 Windows API apiShowWindow 隐藏应用程序 然后 AutoExec 打开设置为 Popup 的主窗体 这一切都很顺利 我的数据库内容
  • 使用 Excel VBA 比较列并突出显示匹配数据

    我需要比较Column B in Sheet 2 with Column C in Sheet 3并突出显示具有匹配数据的单元格Column B Sheet 2 中使用了以下公式条件格式 哪个有效 NOT ISNA VLOOKUP Shee
  • Python仅读取Excel单元格中的公式

    我有一个 Excel 2010 文件 其中包含带有公式的单元格 请参阅下面公式栏中的 C2 下面截图1 我正在使用 python 读取值 它打印的是公式而不是单元格的实际值 下面的 eclipse 控制台的屏幕截图 我希望结果打印 10 1
  • 根据多列中的单元格查找匹配行值的公式

    我试图在同一行中 col1 col2 和 col3 各自匹配时查找 col4 值 我参考了这个SO Post https i stack imgur com YDaBP png因为这是一个类似的问题 但该解决方案对我不起作用 我正在寻找具体
  • 基于另一个选择列表动态更新选择列表

    我想根据另一个中的用户选择填充下拉列表 在网上找不到任何与之相关的内容 我有一本名为查找部门包含下表 A B BS Business School CG Chemical Engineering where column A有定义的名称de
  • 升级到 Office 365 专业增强版后 Excel VBA 运行速度极慢

    我粘贴部分代码如下 这段代码是解析从HTTP请求得到的JSON字符串 根本没有工作表 工作簿操作 在office升级到office365专业增强版之前 效率还是蛮高的 但升级后 解析一个不到2秒的json 却要花费几分钟 我个人不明白根本原
  • 如何将 Excel PivotCache 提取到 Pandas 数据框中?

    第一次在这里发帖 如果以前有人问过这个问题 我深表歉意 我找不到任何适用的内容 有没有办法将 Excel 数据透视表中的基础数据读取到 Pandas 数据框中 几年来 我一直使用 Excel Auto Open 宏来下载多个 Excel 文
  • 无法关闭打开的 Excel 工作簿

    我正在构建一个带有命令按钮 用户表单等的 Excel 文件 其中包含其他工作簿的链接 对于工作表上的命令按钮 我使用与用户表单中的命令按钮相同的代码 workbooks open path 使用用户表单命令按钮 添加以下内容 unload
  • VBA填写两个单元格之间的所有单元格

    我目前正在尝试编写一些 VBA 代码 该代码将使用两个单元格的值填充两个单元格之间的所有单元格 这是我所拥有的 我希望代码能够填写之间的所有单元格 如下所示 因此 正如您所看到的 我希望中间的所有单元格都填写为与两个角单元格相同的值 很感谢
  • 运行时错误“1004”:工作表类的粘贴方法失败错误

    使用 VBA 将 1 行文本从 Word 复制粘贴到 Excel 当代码到达下面的行时 我收到以下错误 ActiveSheet Paste 运行时错误 1004 工作表类的粘贴方法失败错误 But 如果我单击 调试 按钮并按 F8 则会粘贴
  • 使用 VBA 从 Word 发送 HTTP 请求

    我正在尝试将数据从 Word 文档发送到网页 我找到了一些代码 将其粘贴到新模块中并保存 当我运行它时 我收到 编译错误 用户定义的类型未定义 My code Sub http Dim MyRequest As New WinHttpReq
  • 如何将 Summary() 输出从 R 复制到 Excel

    你能传输 复制a的输出吗summary方法 如下所示 到 Excel 工作表 gt summary p2p dt SKILL A p2p dt SKILL A Patch in c BVG1 Patch Skill Date TOR MWF
  • 将文档属性字段添加到页脚会删除现有的页码

    我想在文档中每个页面的页脚中标记一个文档变量字段 我已经弄清楚如何添加该字段 但是 这样做时 页脚中已存在的页码字段将被禁用 仅保留文本并且不再充当动态页码 这是我的代码 它添加了该字段 但以某种方式禁用了页码 sectionFooter
  • “是”运算符给我 False,我可以知道原因吗?为什么? [复制]

    这个问题在这里已经有答案了 在编写 MS Excel VBA 代码时 我遇到了一个简单的问题 如下所示 上面的一点问题都没有 下层有问题 它给了我 假 Dim my01 my02 Set my01 Sheets 1 Set my02 She
  • 从命令行创建 Excel 文件

    有什么方法可以从命令行创建新的 Excel 文件吗 如果您需要创建的 Excel 文件始终相同 您可以手动创建模板 然后随意创建新文件 例如 copy template xlsx myNewSpreadsheet xlsx 如果您需要创建内
  • 将 char 数据类型转换为 datetime 数据类型导致日期时间值超出范围

    我正在努力将数据从 Excel 导入到 SQL Server 我在 sql server 中插入日期和日期时间值时遇到问题 它向我展示了这个错误 System Data SqlClient SqlException The conversi
  • 失败 - 下载 EPPlus.dll 制作的 Excel 文件时出现网络错误

    我尝试下载由EPPlus dll来自 asp net c Web 表单应用程序 但我失败了 网络错误 需要注意的是 上述错误仅发生在 chrome 中 在其他浏览器中可以成功完成该工作 顺便说一下 这个错误不会发生在我的本地主机上 它只发生
  • Outlook 宏中的 SenderName 为空

    我想要得到SenderName和和To属性来自于MailItem对象 但它们是空白的 我可以看到有SentOn Subject以及其他不为空的属性 有谁知道为什么这两个是空白的 这是我的代码 Sub TestMacro Dim myOlAp

随机推荐

  • Django:如何对更新视图/表单进行单元测试

    我正在尝试对我的更新表单和视图进行单元测试 我使用 Django Crispy Forms 来创建和更新表单 UpdateForm 继承了 CreateForm 并对提交按钮文本做了一些小改动 CreateView 和UpdateView
  • PHP:启动 PayPal 结帐的简单方法?

    我有功能齐全的购物车解决方案 我想要的只是我实际传递产品名称 总数 退货地址和我的贝宝地址的代码 以便它可以将我引导到购物车 有人能引导我走向正确的方向吗 PayPal 有上百万个不同的版本 我了解到我需要的是 paypal 网站付款 有人
  • TCP流回放工具

    我正在寻找一种用于记录和重放 TCP 流一侧以进行测试的工具 我看到记录整个 TCP 流 服务器和客户端 用于测试防火墙等的工具 但我正在寻找的是一种工具 它仅记录客户端提交的流量 带有计时信息 然后重新提交到服务器进行测试 由于 TCP
  • Django - Crispy Forms - 自定义输入定位和内联单选按钮

    我不久前一直在使用 django crispy forms 并我想知道是否有一种方法可以设置输入的位置 例如col md XX类或其他东西 使其看起来更好 而不仅仅是字段列表 这是一个例子 This is a normal render o
  • Neo4j 浏览器无法在 Google Chrome 中运行

    在 MacOS Yosemite 10 10 3 中升级到最新的 XCode Command Tools 后 无法使用 Chrome 版本 42 0 2311 90 64 位 作为 neo4j 浏览器客户端 不过 Safari 运行良好 有
  • 高效的纯文本模板引擎

    我有一个简单的警报系统 可以抓取网络上的号码 将它们与预定义的文本模板混合以获取警报 并将其发送给客户 警报是非常简单的纯文本 所以除了纯文本 数字 简单函数 例如 ifthenelse 之外 我不会期望太多 越快越好 那么有没有现成的开源
  • 使用 realloc 调整缓冲区大小

    如果指向的区域被移动 则会出现 free ptr 已完成 您能解释一下上面的内容吗realloc 此行来自 calloc malloc realloc 和 free 的手册页 我认为这更好地解释了这一点 如果没有足够的空间 扩展当前块 当前
  • 暂停NS操作

    I have NSOperationQueue和一些NSOperations in it NSInvocationOperations 尤其 此操作会进行一些计算并相应地更改 UI 元素的状态 当然 通过performSelectorOnM
  • 如何在我的用户名中使用带有 @ 符号的 linux 命令行 ftp? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 当我的用户名有一个时 如何在 Linux 命令行上运行它 中间签个字 ftp u user password host destinati
  • 这个生产者-消费者实现中是否存在竞争条件?

    在 操作系统概念 Silberschatz 第 9 版 的 3 4 1 节中 作者提出了生产者 消费者问题 并给出了以下使用循环缓冲区的实现 第 125 126 页 Shared variables define BUFFER SIZE 1
  • Rails 4从数据库填充下拉值

    我有一个 Rails 形式的下拉菜单 这工作正常 但我怎样才能使它动态 与模型数据交互 我有一个控制器 其操作包含 list List all 我怎样才能填充id and name in my combobox 我一直在四处寻找 但我不清楚
  • 从 PHP 匿名函数访问变量

    我有以下带有静态变量的类 如何从匿名 PHP 函数中访问类的静态函数 class MyClass public static function MyFunction mylocalparam MyStaticClass MyStaticMe
  • 如何修复“java.sql.SQLSyntaxErrorException:'字段列表'中的未知列'product0_.return_policy'”异常?

    当我尝试在浏览器上运行 URL 时 我收到此 SQLSyntaxErrorException 字段列表 中的未知列 product0 return policy GET一切products 看这里 https i stack imgur c
  • 反应按钮的 onClick 属性:

    1 和 2 有什么区别React onClick gt handleDelete id 1 onClick handleDelete id 2 为什么 2 会导致无限循环 而 1 却工作得很好 我找不到任何关于 React 中 onClic
  • 在 GlassFish 中将 JSF 输入提交值的请求字符编码设置为 UTF-8

    我的所有值中插入的值都有问题
  • ICS 上区分平板电脑和智能手机

    据我所知 默认情况下 ICS 之前 为了区分平板电脑和智能手机 开发人员可以使用 Android 清单中的 sdk 版本 除了屏幕尺寸和 openGL 过滤器 现在 随着 ICS 在 SP 和平板电脑上运行 如果我需要区分 SP 和平板电脑
  • 在 Kotlin 中,这个 get() 做了什么

    我对 Kotlin 很陌生 想知道get login email txt toString do 是否设定email String get and set value 字段后面表示自定义 getter 和 或 setter 的声明 这是使用
  • 安装 Ruby gems 时的开发人员工具问题

    我正在尝试将 puma 安装到我的 MacOS 10 13 6 上 要安装 puma 我运行命令gem install puma但它回来了 Building native extensions This could take a while
  • 带点符号的多重导出

    我有这个代码 侧边栏 jsx class Sidebar extends Component render return div this props children div class Item extends Component re
  • 如何让VBA宏在后台持续运行?

    我想监视一个值并在满足某些条件时收到电子邮件通知 我有一个像这样的宏 Do While True Worksheet Calculate If Value gt 10 Then SendEmail End If Sleep 60 CLng