在vba中是否存在任何功能,我可以在循环中索引方法,而不是索引匹配它们?
我希望避免多次重复for循环,因为在应用该方法之前,在for循环中会发生其他事情,这会使代码变得混乱
请参见以下示例以获得更好的解释...
For iRow = 1 to LargeNumber
'do lots of stuff here...
'...........
'to here....
Select Method
Case Method1
Call ApplyMethod1
Case Method2
Call ApplyMethod2
.......
Case Methodn
Call ApplyMethodn
end select
next iRow
然而,该方法是事先已知的,不需要为每一行都找到。因此,我可以更有效地应用类似这样的方法(如果功能存在的话!)。
For iRow = 1 to LargeNumber
'do lots of stuff here...
'...........
'to here....
goto Method
:Method1
Call ApplyMethod1
goto EndOfMethods
:Method2
Call ApplyMethod2
goto EndOfMethods
.......
:Methodn
Call ApplyMethodn
goto EndOfMethods
:EndOfMethods
end select
next iRow
3条答案
按热度按时间um6iljoc1#
除了@user3598756的类方法之外,您还可以从
Run
procedure,x一个一个一个一个x一个一个二个x
如果您喜欢更直接的代码而不附加的 * 枚举变量 *,则只需如下循环即可:
uidvcgyl2#
使用
CallByName()
函数(https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/callbyname-function),它需要一个对象来调用的方法因此需要添加一个类来收集所有需要的方法
添加一个类模块,给予它一个名称(我将其命名为“clMethods”)
将此代码添加到类模块
在代码中使用
brccelvz3#
这是软件设计领域中常见的“设计模式”。
在VBA中,最简洁的方法是使用字典和一组公开单个exec方法的小类。
加载一个字典,其中包含键值对和类的一个新示例,该示例包含链接到键的方法(或者,如果您了解如何链接,则加载一个带有predeclaredid的类)。
如果字典名为“myMethods”,方法选择器名为“myMethod”,则可以使用
这是此类活动的基本级别。您可以通过在新阶段提供初始化参数等来进行更复杂的操作。