gpt4 book ai didi

vba - 如何在运行时重新执行相同的功能

转载 作者:行者123 更新时间:2023-12-04 20:20:29 24 4
gpt4 key购买 nike

我们创建了一些 excel 宏,我们将其用作对应用程序执行某些操作的脚本。每个脚本都有多个函数调用,并且在执行期间,由于应用程序相关的性能问题,其中一些函数调用失败(如窗口未正确加载/窗口加载时间超过预期等)
由于这些与应用程序性能相关的问题经常发生并且我们的执行总是失败,我们计划在脚本中实现一些代码,在执行期间我们可以使用这些代码再次重新执行失败的函数(来自宏的函数)。
你能告诉我我应该如何编码以实现再次执行相同功能的目标。
例如,
如果在宏中有以下函数调用:
功能一
功能二
功能 3
在这种情况下,如果函数 2 失败,那么我想在运行时重新执行函数 2。
注意:这里我们不知道哪个函数调用会失败,所以我需要实现重新执行任何在执行过程中失败的函数的能力,所以它可能是函数 1/函数 2/函数 3。

最佳答案

将所有函数存储在字典对象中。

设置对 Microsoft 脚本运行时库的引用

public Sub MasterFunction()

Public Dict as Dictionary
Set dict = New Dictionary

Dict.add "Function1"
Dict.add "Function2"
Dict.add "Function3"

call Function1
call Function2
call Function3

运行函数时...在函数末尾,从字典中删除函数名称。 IE,
public Function Function1()

dict.remove "Function1"

End Function

最后一步是在字典中添加一个循环,以查看是否还有任何项目。如果字典中没有项目,则您的函数成功执行。如果有项目,则使用 application.run “Function1”再次调用该函数,将“Function1”替换为您的函数名称。下面的完整示例,复制并粘贴到模块中并运行“MasterFunction”。我没有调用第三个函数来模拟它没有运行。如果您单步执行代码,您将看到唯一剩下的项目是未调用的 Function3。
Public dict As Dictionary
Public Function MasterFunction()

Set dict = New Dictionary
dict.Add "Function1", "Function1"
dict.Add "Function2", "Function2"
dict.Add "Function3", "Function2"

Call Function1
Call Function2

Dim DictItem

For Each DictItem In dict
Application.Run DictItem
MsgBox DictItem & " has run again because it didn't execute last time"
Next

Set DictItem = Nothing
Set dict = Nothing
End Function

Function Function1()
dict.Remove "Function1"
End Function

Function Function2()
dict.Remove "Function2"
End Function

Function Function3()
dict.Remove "Function3"
End Function

关于vba - 如何在运行时重新执行相同的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4219909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com