问题标签 [doevents]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
898 浏览

excel - 为什么我的 VBA 代码从一个工作簿复制并粘贴到另一个工作簿时出现运行时错误“1004”?

我的宏的 VBA 代码遇到问题,我想打开 msoFileDialogFolderPicker 并且用户选择一个文件夹,在该文件夹中打开所有 excel 文件,并且将从新打开的工作簿中逐一复制数据并粘贴到特定的运行宏的工作簿中的工作表。基本上,我们给每个销售代表一个电子表格来填写他们的销售额,然后他们将电子表格提交给销售经理。我想要做的不是有人必须打开每个电子表格并复制数据并将所有数据手动粘贴到一个电子表格中,而是简单地拥有一个为我执行此操作的宏。由于文件的位置和名称可以更改,因此我试图使其尽可能动态。可能有更好的方法来做到这一点,所以任何建议都非常感谢!

我遇到的问题是我打开文件并复制它们,但是当我尝试将其粘贴到运行宏的工作簿中时,出现运行时错误 1004“范围类的复制方法失败” . 我已经尝试过 ThisWorkbook 和 ThisWorkbook.Activate 来尝试告诉 Excel 转到运行宏的电子表格,但没有解决我的问题。有时我会克服错误,但它仍然不会将数据粘贴到主工作簿中。我的代码写在下面。诚然,它主要是从我找到的代码中复制而来的,但我已尝试根据我的目的对其进行调整。我遇到错误的行是“wb1.Worksheets(1).Range("A5").Select”行。

这是我最终要做的事情的简化版本,其中包括从新打开的工作簿中的多个工作表中复制内容并将它们粘贴到最初运行宏的工作簿的多个工作表中。然而,在这一点上,我只是想让这个简单的版本运行和工作。感谢大家的帮助和对长代码的歉意,但我想让每个人都知道我在做什么。谢谢!

0 投票
1 回答
2308 浏览

vba - Excel VBA 宏运行时间过长

我有下面的代码,我试图获取一个文件,删除其中的原始数据,然后将其保存为新文件。这两个文件都相当大,大小接近 100mb。因此,我试图复制和粘贴值的代码的以下部分花费了太长时间。关于如何减少运行时间的任何建议。谢谢

0 投票
3 回答
160 浏览

ms-access - 让MS Access等待很长时间/在某个时间触发(VBA)

我想每天在某个时间只运行一次 MS Access 功能 - 早上 6 点计算机(Windows 2010)运行一整天。什么是最简单但资源消耗最少的方式。例如。我可以在 MS Access 的 VBA 代码中放置一个循环来做某事(例如 DoEvent),直到早上 6 点,但这可能会减慢计算机的速度。计算机已经忙于其他任务。因此,在 MS Access 中触发模块/功能的方式应尽可能减少 CPU 消耗。请问有谁能帮忙吗?

0 投票
2 回答
1958 浏览

javascript - 脚本运行时 JavaScript 页面更新

我有一个网页在加载过程中会进行大量计算。

我想在页面“思考”时显示一个微调器栏,以便最终用户知道延迟是可以预料的。

我打算这样做的方法是显示一个 GIF 文件,该文件将是一个旋转的轮子,并隐藏将是我的输出的表格。

问题是,一旦函数启动,对页面的更新似乎会冻结,直到函数完成。因此,最终用户永远不会看到“进行中”部分。

我放在一起来演示我的问题的示例代码是:

当我运行它时,它会显示三个按钮。

当您点击“开始计时器”时,它应该显示处理几秒钟,然后显示完成。相反,按钮会更改颜色,否则在计时器完成之前似乎什么都不做,并且显示完成。

(我是 JavaScript 新手,但在其他几种语言方面经验丰富。我可以在 Visual Basic 或 Powershell 中进行“DoEvents”类型的调用吗?)

0 投票
1 回答
143 浏览

vba - 排序和格式化的执行速度太快?(VBA)

我在我的脚本格式化单元格的末尾(主要是内部颜色取决于单元格值)并根据这些单元格的值对行进行排序。

  • 如果我以中断模式(一次一行)运行整个脚本,它将完美地执行该过程。
  • 但是,当我从头到尾运行整个脚本而不暂停格式化和排序时,不会发生。
  • 我有两个子程序,一个用于格式化,一个用于排序。如果我在执行整个代码后再次单独运行它们,它们会执行它们应该执行的操作。

我能想到的唯一原因是代码执行速度太快,超出了剩余的内存量,并且某些命令被覆盖了。但是,我只是一个 VBA 新手,所以如果我错了,请赐教。

我尝试过激活ScreenUpdating,并尝试DoEvents在代码的相关部分之前和之后放置。

您处理过快的代码执行的方法是什么?DoEvents除了释放 VBA 代码中的内存之外,还有其他方法吗?


我的使用方式DoEvents是放在OpenForm = DoEvents我认为可能需要处理本地队列的行上,或者与 If 语句一起Mod放在 for 循环中。

我的排序代码如下所示(变量ws是工作表):

我的格式化代码太长,可能不相关。但它基本上由 If 语句和内部着色组成,例如。

0 投票
2 回答
166 浏览

c# - 在阻塞的后台工作人员和 Application.DoEvents

如果后台工作人员当前正在运行,我正在尝试取消它,然后再启动另一个。

我首先尝试了这个,函数中有更多的取消检查......

如果工人在StartServerGetIP.RunWorkerAsync();

在此之后,我发现了一个丑陋的解决方案

有没有一种我可以实现的模式允许我异步取消后台工作程序并在不调用的情况下启动另一个Application.DoEvents

编辑:取消按钮是不可能的。

编辑:对于那些询问内部方法的人......

还不如给你环形缓冲区..

0 投票
0 回答
123 浏览

r - R语言是否有等效的doEvents()

我是一名 Web 开发人员/SQL 人员,他的任务是为使用各种统计语言的一群统计学家提供帮助台支持,这不是我的强项。

我有一个正在处理大型数据集的 R stat 人员。处理需要几天时间。平台是 citrix 将 R(不是工作室)投影到虚拟桌面上。他正在接受看似间歇性的锁定。虽然他的处理很紧张,但他确实每隔几分钟就有一段时间没有调用重型处理功能。我在想R中是否有一种方法可以像VB和c#那样执行“doevents()”,其中CPU周期可以转移到R GUI?不是作为永久解决方案,而是作为在一段时间内恢复 GUI 的一种方法,以便我们可以看到发生了什么。目前他正在向他的应用程序添加日志消息,这样我们至少可以在应用程序停止的地方。

提前致谢。

0 投票
3 回答
15812 浏览

excel - 如何等待 Power Query 刷新完成?

设置:

  • Windows 7(工作中)
  • Windows 10(在家)
  • Excel 2016(工作中构建 4627)
  • Excel 2016(在家构建 8730)
  • Power Query 设置为导入、附加和转换 Excel 文件的文件夹。此步骤有效。

在使用任何技术等待 Power Query 完成刷新后,如下所示的“我尝试过的事情:”部分中所述,可以显示一个消息框,并且可以在 Power Query 表完成更新之前执行任何其他代码到查询和连接窗格中显示的刷新指示器(微调器?)图标。

上述语句的例外是OnTimeApplication 类的方法,如下面的“代码”部分所示,它似乎不会中断电源查询刷新的轮询。问题在于它使用硬编码的时间量来暂停 VBA 代码,这并不总是有效,因为被查询的数据的大小、数量和持续时间会随着时间而变化。

我试过了:

  • 我已阅读所有说明使用DoEventsBackgrgoundQuery = False、 和CalculateUntilAsyncQueriesDone方法和属性的 StackOverflow(和其他网站资源)。
  • 我尝试按照此链接的建议创建一个类来创建查询更新事件之前/之后的事件(下面的代码示例中未显示)。
  • 我尝试使用 Do Until/While 循环和 QueryTable 方法的 .Refreshing = True/False 属性来等待刷新完成。
  • 我尝试将 Excel 菜单(菜单栏 --> 数据 --> 连接 --> 属性)中的 BackgroundQuery 属性设置为 False,如此处“subro”所建议的那样:等到 ActiveWorkbook.RefreshAll 完成 - VBA,带有菜单的图像这里:

用于设置 BackgroundQuery 属性的 Excel 菜单.

代码:

代码注释:

  • 代码中任何以“Linit”开头的内容。是一个对象或变量,由代码的“INITIALIZATIONS:”部分中的“Linit.ini_Setup_Project”过程调用在过程之外全局设置。
  • 例如,“Linit.gvTbl_ZZZZZ”是一个对象变量,它指向一个空的单行表,该表的名称以字符“zzzz”为星号,由 Power Query 生成并加载到 Excel 工作表中。该代码显示了网站的链接,在该网站上提出了使用这样的空表的建议。

问题:

  1. 由于 Power Query 没有内置回调让 Excel 知道它已完成更新任何刷新过程,这是一个失败的原因吗?
  2. 如果这不是一个丢失的原因,是否有任何其他方式(此处未描述)可用于在连接尚未完成刷新时以某种方式触发错误,或在连接完成时触发错误? (这里的想法是,如果错误不会阻止查询完成,则此错误可能会被捕获为检测天气的一种可能方式,或者刷新尚未完成)。
  3. 有没有办法直接使用 VBA 探测连接流以查找连接关闭或完成状态?
  4. 有什么方法可以通过调用 Excel 之外的程序直接访问刷新过程,该程序是用 C# 或 Python 等其他语言编写的?
  5. 你能想出其他任何可以尝试或测试的方法来完成这项工作吗?我会继续自己寻找答案,但经过一整年的搜索,我感觉有点不走运。
0 投票
1 回答
1684 浏览

excel - Excel/VBA DoEvents 和控件返回

我正在尝试制作一个宏,该宏在运行时至少会向用户返回一些部分控制权。如果用户编辑单元格,则不能危险地更改宏行为,因为依赖内容很少。

我正在使用这种方法来允许用户在宏重新获得控制权并继续执行下一条语句之前占用执行线程并提交他们的单元格更改:

我把它放在了一些长语句和内部循环之后。

它很不稳定,但很实用,只有一个问题:如果用户需要很长时间来编辑单元格,宏就会静默停止。

谁能解释为什么会这样?是因为计时器超过了阈值吗?我认为当工作簿处于编辑模式时所有宏执行都会停止?

有关如何处理此问题的任何建议?

0 投票
0 回答
756 浏览

vba - 必须有一种方法可以在没有 DoEvents、GotoSlide 或 .AddShape 的情况下刷新 PowerPoint (2016) 屏幕

我的程序根据另一个可操作的形状不断更新形状的位置。如果没有DoEventsGotoSlide.AddShape或增加幻灯片窗口,屏幕将不会刷新,只会显示形状位置的最终结果。我不能使用 DoEvents,因为它在移动鼠标时速度太慢了,而且我不能使用 GotoSlide、.AddShape 或类似方法,因为它们不允许用户在 PowerPoint 中单击(将忽略或使程序崩溃)。

请注意,此处的解决方法如何刷新幻灯片放映中的活动幻灯片?导致我上面提到的问题(如果单击鼠标,.AddShape、GotoSlide 和增加 slideshowwindow 都会使程序崩溃)

我已经尝试使用GetQueueStausGetInputState作为从 DoEvents 中过滤掉某些事件的方法,但似乎都不适用。并且在必要时仅将它们用于 DoEvents 显然不是一种选择,因为当形状移动时总是需要它,并且在 DoEvents 期间移动总是会根据鼠标移动而减慢。

最后,我还尝试了图表,因为它们是 PowerPoint 中唯一具有 .refresh 功能的形状,但我都无法让它工作,并认为不值得花时间,因为图表的形状会总是被限制在一个矩形内(对于我想要我的程序做的事情来说太有限了)。

这是我的代码:(我目前正在使用GotoSlide方法)

该代码使形状 Q 在屏幕周围跟随形状 A,并且用户可以使用 WASD 键盘输入来控制形状 a。

!!代码运行时注意不要点击幻灯片,否则程序会崩溃!!