如何在Excel VBA中使用for循环创建多个subs?

时间:2018-02-22 10:35:33

标签: excel-vba for-loop vba excel

我想用类似名称创建多个潜艇。这是我的Excel VBA代码:

' sub main
Sub LoopSubsTest()


' defining an array
Dim myarray As Variant
myarray = Array("solver_inv_1", "solver_inv_2")

' for-loop
For i = 1 to 2

' sub sub
Sub myarray.Item(g)()

' this is the code part
...

End Sub
Next i

End Sub

当然,欢迎任何其他解决方案。遗憾的是,此代码违反了VBA编码,即Subs无法嵌入另一个Subs。如何在Excel VBA中使用for循环创建多个subs?提前谢谢。

1 个答案:

答案 0 :(得分:1)

<强> Application.Run

在这里,您可以找到两种执行名为Subs的方法:

[1]常数加计数器

Sub LoopSubsConst()
Const MYSUB = "solver_inv_"
' for-loop
For i = 1 To 2
    Run MYSUB & i
Next i
End Sub

[2]命名数组项

Sub LoopSubsArray()
' declare array
Dim myarray As Variant
myarray = Array("solver_inv_1", "solver_inv_2")
' run subs
For i = LBound(myarray) To UBound(myarray)
    Run myarray(i)
Next i
End Sub

注意 Application.Run也可以接收最多30个与被调用的subs中的顺序相对应的参数(警告:只有值,没有对象作为参数)。