use*_*511 1 vb.net vba vb6-migration
我被分配了一个项目来替换GoSubs应用程序中的所有内容VBA,因为该应用程序正在切换到VB.net并且GoSubs在那里不受支持。这是原始代码的简化版本:
Sub Main ()
Dim A As String
...
If ConditionX Then A = "Black"
Else A = "White"
End If
...
GoSub Execute
...
Execute:
Call BuiltInSub1 (A)
Call BuiltInSub2 (A)
'where BuiltInSubs are some predefined procedures within the application
...
Return
End Sub
Run Code Online (Sandbox Code Playgroud)
我正在考虑使用 aCall来替换,GoSub如下所示:
Sub Main ()
Dim A As String
If ConditionX Then A = "Black"
Else A = "White"
End If
...
Call Execute
...
End Sub
Sub Execute ()
...
Call BuiltInSub1 (A)
Call BuiltInSub2 (A)
...
End Sub
Run Code Online (Sandbox Code Playgroud)
我上面的修改版本的明显错误是变量A没有在Sub Execute. 我能想到的一个选择是A在 中重新定义Sub Execute,但要做到这一点,我需要重新声明用于A在 Main 中定义的所有变量,其中有很多变量。
GoSub在我的情况下,最好/最有效的替换方法是什么?
根据我上面的评论,您的代码应该如下所示:
Sub Main ()
Dim A As String
If ConditionX Then A = "Black"
Else A = "White"
End If
...
Execute(A)
...
End Sub
Sub Execute(A As SomeType)
...
BuiltInSub1(A)
BuiltInSub2(A)
...
End Sub
Run Code Online (Sandbox Code Playgroud)
如果您确实发现需要声明参数ByRef,您可能需要将重构视为更长期的解决方案。
| 归档时间: |
|
| 查看次数: |
2067 次 |
| 最近记录: |