【问题标题】:VBA - is it possible to call subs or functions from a collection or other storage location?VBA - 是否可以从集合或其他存储位置调用子程序或函数?
【发布时间】:2014-12-10 11:33:37
【问题描述】:

非常不言自明,我有一组子/函数,我会经常调用它们。我希望能够将它们存储在一个集合或类似的东西中,这样我就可以写了,例如:

for counter = 1 to 10
    call MetricSubs(counter)
next counter

这可能吗?

【问题讨论】:

  • 如果您将它们命名为macro1macro2,那么您可以使用callByName "macro" & i

标签: vba call subroutine


【解决方案1】:

如果你总是要以相同的顺序调用相同的方法,正确的方法是调用一个调用你的方法的方法:

Public Sub OuterMethod()
    ' do some stuff
    Call InnerMethod()

End Sub

Public Sub InnerMethod()

    Call MethodOne()
    Call MethodTwo()
    Call MethodThree()

End Sub

如果要调用的方法的包含或顺序发生变化,我猜它是可预测的并且是有限的。好的函数式编程对于这些情况都有一个父方法。您的代码将更易于阅读和维护。

Public Sub OuterMethod()

    If widget.isRed Then
        Call RedWidgetStuff()
    ElseIf widget.isBlue Then
        Call BlueWidgetStuff()
    Else
        Call NoWidgetStuff()
    EndIf

End Sub

Public Sub RedWidgetStuff()

    Call SetWidgetColor(Red)
    Call PaintWidget()
    Call FinishWidget()

End Sub

Public Sub BlueWidgetStuff()

    Call SetWidgetColor(Blue)
    Call PaintWidget()
    Call FinishWidget()

End Sub

Public Sub NoWidgetStuff()

    Call FinishWidget()

End Sub

如果您仍然认为需要将函数加载到集合中,我会要求您认真质疑您的方法。更好的程序员会为此做鬼脸。

【讨论】:

  • 谢谢,我没想过这样做
猜你喜欢
  • 2022-01-04
  • 1970-01-01
  • 2018-06-04
  • 2013-10-01
  • 2010-09-13
  • 1970-01-01
  • 2015-10-23
  • 2019-07-16
相关资源
最近更新 更多