我想知道是否有一种方法可以在另一个sub中运行指定的代码行,比如说在执行Sub_1中的代码之前仅执行Sub_2的行1至行10。
我进行了一些背景研究,并在下面找到了@Andrew建议的代码。
Private Sub Sub_1(sender As System.Object, e As System.EventArgs) Handles Button1.Click
'Call the Save Sub
Call Sub_2(sender, e)
'Proceed to execute the rest of the this Sub_1
上面的代码当前执行的是执行我所调用的整个子程序,这不是我想要实现的。
我还阅读了有关@Henry建议的使用两个Subs公用的共享例程的信息,但是对我来说,问题在于在Sub_2的各个阶段都需要在共享例程中声明变量,但不能将其用作程序表示未声明它们(在Sub_1中)。
同样,我要实现的是仅从Sub_1中的Sub_2执行几行代码。
我正在使用Visual Basic 2010 Express。
从技术上讲,您正在尝试做的事情是可行的(以各种真正的骇人听闻的方式),但是很容易成为代码结构的噩梦。相反,请考虑对构建例程的方式进行更改。
Subs和Function旨在成为独立的代码“岛”,它们可以(通常)执行而无需了解程序的其余部分。您可以将变量传递给它们,然后取回变量,但是它们应该一次又一次地操作。
从您提出的方案中考虑以下理论代码:
Dim variable_1
Private Sub Sub_1()
Dim variable_2
Call Sub_2()
End Sub
Private Sub Sub_2()
'lines 1-10
'lines 11-20
End Sub
在这里,我们为您提供所需的设置。两个Sub都可以“看到” variable_1
,但是Sub_2
看不到variable_2
。这称为范围。最后,存在一个问题,Sub_2
当从中调用时,只希望在内部执行第1-10行Sub_1
。
首先要做的是将我们的代码分成逻辑组。根据您的描述,Sub_2
单独查看第1-10行是有意义的,因此这自动意味着应将它们分组在一起。第11-20行可能是一个不同的故事,但是由于它们有时是相关的而其他的则无关紧要,因此我们也应将它们分开。
Private Sub Sub_2()
'lines 1-10
End Sub
Private Sub Sub_3()
Call Sub_2()
'lines 11-20
End Sub
所做的更改看起来很简单,但实际上功能非常强大。当我们只想执行第1-10行时,我们调用Sub_2
。如果要执行第1-20行,则调用Sub_3
。Sub_3
会自动调用Sub_2
(第1-10行)先执行,然后执行11-20行。简单。
现在我们只需要弄清楚如何处理变量。您可以通过多种方法来处理这种情况,但是最简单的方法是扩大其范围。如果您需要访问的所有变量都在这些Subs之外声明(一个“升级”),则它们都可以访问它们。例如:
Dim variable_1
Dim variable_2
Private Sub Sub_1()
Dim variable_3
'can access 1, 2, 3 but NOT 4, 5
Call Sub_2()
End Sub
Private Sub Sub_2()
Dim variable_4
'can access 1, 2, 4 but NOT 3, 5
End Sub
Private Sub Sub_3()
Dim variable_5
'can access 1, 2, 5 but NOT 3, 4
End Sub
这应该可以帮助您入门。一旦掌握了这一点,就可以了解将变量传递到Subs和Function中的各种方法(这也提供了一些有关如何将其删除的提示)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句