Sub过程作为我们每次编写VB程序时总是会出现的一个程序,那你知道它到底是什么吗?你在编写代码时有没有遇到过这样的问题:多个事件过程需要执行同一段相同的代码,那有没有什么办法能够让它只编写一次,但其他事件也都可以使用呢?今天来好好研究研究吧!
什么是Sub过程?
也称子过程
Sub过程的声明
[Private|Public][Static] Sub <过程名> ([参数表])
过程体
[Exit Sub]
End Sub
- Private,只在过程所在的模块(如窗体模块)中的过程才能调用该过程;
- Public,应用程序中的任何地方都可以调用该通用过程。默认;
- Static,该过程中的局部变量是静态变量,调用结束后值仍然保留。也就是说,static当对它进行更改之后,再次调用它时,那么他的值还是保持上一次运行的值
- 参数表是用来指明调用该Sub过程时需要传递给该过程的参数及类型。表内的参数称为形参。Sub过程可以没有形参(但小括号不可以省略),也可1到多个形参(多个之间用逗号隔开);
- 在过程中加入exit sub语句提前退出过程
上述中讲到了一个形参的概念:形参是在Sub、Function过程的定义中出现的变量名。本质上一个名字,不占用内存空间,当他只有在被Function过程(函数)调用了才能进行运算、赋值。之后的博客还会详细讲到。
适用范围
窗体模块(.Frm)中,标准模块(.Bas)中
建立
我这里会讲到三种方法来建立Sub过程
1.选择“工具”菜单中“添加模块”命令,新建一个标准模块即可编辑sub过程
2.“工具”菜单中“添加过程”命令,填上想要创建的Sub过程名,类型选择子程序
3.对象框中选择“通用”项,输入Sub过程头+过程名,按回车键
调用
1.使用Call语句。 Call<过程名> ([实参表])
注:实参个数与形参个数必须相等
2.直接使用过程名 <过程名> [<实参表>]
Private Sub Form_Click() FontSize = 20 Call test '使用Call语句调用过程 test '使用过程名调用过程 End Sub Sub test() '声明没有形参的Substr过程 Print "我是大美女" End Sub
上面这段代码中我分别使用了两种方法调用,不管你想使用哪种都可以,但他们还有个小小区别需要你注意:当使用过程名调用过程时,可以省略括号和Call
什么时候使用?
多个事件过程需要执行同一段相同的代码。如下代码是分别对1-10和1-100的累加的实现方法:
'----------------------------------------------- '不使用Sub过程的程序代码 '----------------------------------------------- Private Sub Command1_Click() Dim a%, b%, total total = 0 For i = 1 To 10 '1-10的累加 total = total + i Next Print "1+2+...+10="; total End Sub Private Sub Command2_Click() Dim a%, b%, total total = 0 For i = 1 To 100 '1-100的累加 total = total + i Next Print "1+2+...+100="; total End Sub
那如果使用了Sub过程实现是什么样的呢?
'----------------------------------------------- '使用Sub过程 '----------------------------------------------- Private Sub Command1_Click() Dim i%, total! Call fact(10, total) Print "1+2+...+10=" & total End Sub Private Sub Command2_Click() Dim i%, total! Call fact(100, total) Print "1+2+...+100=" & total End Sub Sub fact(n%, total!) Dim i% total = 0 For i = 1 To n total = total + i Next End Sub
从第一段代码我们就可以很明显的看出来,在Command1和Command2都使用相同的Click事件求累加和的代码,是不是看起来很重复,但如果我们使用Sub过程来编写是不是减少了这种重复性,提高了代码的可重用性呢?
从上面我分别对“使用Sub过程”和“不使用Sub过程”的介绍,你是不是对“过程”这一概念面纱下的神秘越来越感兴趣了呢?这就是代码的神奇魅力!