Сохранение всех функций в объекте словаря.
установить ссылку на Microsoft Scripting Runtime Library
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
Когда функция запускается ... в конце функции, удалите имя функции из словаря. т.е.
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