Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对模块变量更改运行VBA宏_Vba_Excel - Fatal编程技术网

对模块变量更改运行VBA宏

对模块变量更改运行VBA宏,vba,excel,Vba,Excel,是否有办法在同一模块中的某个变量每次更改时在模块中运行宏 重要的是,范围仅限于模块,我认为这使得诸如“工作簿更改”之类的技术不可接受 我有一个函数,我希望返回一个初始值,然后触发另一个子模块来更新工作表的其他部分,但所有代码必须包含在单个模块中 维护一个您想要监控的全局变量,比如说每10秒一次 使用Application.OnTime每隔10秒运行一次监控Sub(谷歌了解如何使用此功能) 您的监控Sub应将该变量与旧副本进行比较,旧副本也作为全局变量保存。 如果未检测到任何更改,则不执行任何

是否有办法在同一模块中的某个变量每次更改时在模块中运行宏

重要的是,范围仅限于模块,我认为这使得诸如“工作簿更改”之类的技术不可接受


我有一个函数,我希望返回一个初始值,然后触发另一个子模块来更新工作表的其他部分,但所有代码必须包含在单个模块中

  • 维护一个您想要监控的全局变量,比如说每10秒一次
  • 使用
    Application.OnTime
    每隔10秒运行一次监控
    Sub
    (谷歌了解如何使用此功能)
  • 您的监控
    Sub
    应将该变量与旧副本进行比较,旧副本也作为全局变量保存。
    • 如果未检测到任何更改,则不执行任何操作
    • 如果检测到更改,则更新
      PrevValue
      以反映监控变量的更新值,然后调用需要调用的任何其他子例程

通过Sub设置/更改变量,并使该Sub触发宏。它是在普通模块中,还是在工作表/课堂中?如果在类/工作表中,您可以使用属性而不是“裸”全局。我想使用函数将初始值返回到工作表,然后在该值运行后触发宏,因为UDF无法修改其他单元格-这是不清楚的,很抱歉,我在一个常规模块中工作。您要触发的宏是做什么的?我想您需要提供更多详细信息,因为我不清楚您要做什么。UDF不能修改其他单元格,但UDF可以调用另一个过程来修改单元格。谢谢,这是我需要的。您知道Application.OnTime是否会严重消耗系统资源吗?这个模块可能会一直运行,我想确保它不会对用户系统造成太大的负担。如果我理解这个方法,这意味着代码会一直运行,但会暂停。这意味着,除非文件已关闭,否则在文件中或计算机上执行任何其他操作都是不明智的。如果文件每隔15、30秒运行一次,您甚至不会注意到它(即监控子系统)。但它调用的Sub可能会根据更改的频率降低速度。最好是试试看。上一次我尝试这样的东西时,它对用户来说是相当透明的user@guitarthrower:不太好。它会在后台安静地运行,如果你正在更新一个单元格等等,它只会“等待”。尝试搜索应用程序。谷歌上的实时时钟示例。在您的系统上运行它,并尝试同时使用电子表格。你甚至不会注意到它是presence@guitarthrower,而且,我很高兴了解更多关于监视任何模块中任意变量的非轮询方法。您可以设置事件,但不能为任何可能的变量更改设置事件。