如何在VBA中使用Loop调用子例程子集?
我有一系列的子程序( Sub1
, Sub2
, Sub3
等)。 我想根据用户定义的值调用这些子例程的一个子集。 例如,从7到13。
我想使用基于子程序的名称中的数字的循环,但它似乎并没有在VBA中工作。 有没有人有build议?
示例代码:
Sub test() Dim i As Integer Dim Start As Integer Dim End As Integer Start = CEM_Exec.Range("User_Start") End = CEM_Exec.Range("User_End") For i = Start To End Call Sub"i" Next i End Sub
假设所有的预定程序都在Module1中,
Sub test() Dim i As Integer Dim intStart As Integer Dim intEnd As Integer intStart = CEM_Exec.Range("User_Start") intEnd = CEM_Exec.Range("User_End") For i = intStart To intEnd Application.run "Module1.Sub" & i Next i End Sub
我认为简单的解决scheme是在For
循环中使用Select Case
。
Sub test() Dim i As Integer, Start_Num As Integer, End_Num As Integer Start_Num = CEM_Exec.Range("User_Start") End_Num = CEM_Exec.Range("User_End") For i = Start_Num To End_Num Select Case i Case 1 Call Sub1 Case 2 Call Sub2 Case 3 Call Sub3 'and so on ' ' ' ' Case Else 'Error message End Select Next i End Sub
您可以使用Application.Run
方法以及过程的名称:
注意: End
是VBA中的一个保留字,所以使用一个名为iEnd的variables会更安全(我已经更新了Start
和End
来成为iStart
和iEnd
。
Sub test() Dim i As Integer Dim iStart As Integer Dim iEnd As Integer iStart = CEM_Exec.Range("User_Start") iEnd = CEM_Exec.Range("User_End") For i = iStart To iEnd Application.Run "Sub" & i Next i End Sub