过程与函数的区别在于:是否有返回值。
1、Private:在模块中使用,而Public则可以在全局使用。
2、Static,表示该过程中的局部变量是静态变量,过程结束后不释放局部变量所占的内存单元,即每次调用变量并不进行初始化。
1、程序一般默认为byref传递。
2、Byval、byref传递的区别:用一个实例说明:
(窗体中代码如下:
Private Sub Command1_Click()
Dim m As Long
m = 100
mysub m
MsgBox "m=" & m
End Sub
模块窗体代码:
Public Sub mysub(ByVal n As Long)
n = n + 100
End Sub
其运行结果:100,但是窗体代码不变,将模块中的传递方式改为:byref,则结果为200.
3、Optional:可选的,可缺省的。
例如:编写程序实现5和8的阶乘:
Private Sub Command1_Click()
Dim i As Integer,total As Single
Call fact(5,total)
Text1.Text = "5!=" & total
End Sub
Private Sub Command2_Click()
Dim i As Integer,total As Single
Call fact(8,total)
Text1.Text = "8!=" & total
End Sub
Private Sub fact(n As Integer,total As Single)
Dim i As Integer
total = 1
For i = 1 To n
total = total * i
Next
End Sub
问题:为什么我们要使用过程?而不直接编写呢?
当然,在上面这道题目中我们完全可以直接编写代码,无需采用过程来实现,但是,如果我们还要在其他窗体里使用fact()过程怎么办?还是每个窗体都定义一次吗?可行吗?那么我们需要定义一个模块窗体,用public把fact()定义在模块里,然后才能保证其他窗体可以调用此过程。
函数必须要有参数。而过程对参数没有强制要求。