子程序:实现特定功能的程序代码块
子程序语法:
[修饰符] Sub 子程序名称([参数1,参数2,参数3])
代码块
End Sub
子程序如何调用:
1 . 子程序名 [参数1,参数2,...]
2. Call 子程序名 [(参数1,参数2,...)]
带参子程序
eg.
Sub AddNumber2(Num1 As Integer,Num2 As Integer)
Dim Sum As Integer
Sum = Num1 + Num2
Debug.Print "相加结果:" & Sum
End Sub
Sub TestSub2()
AddNumber2 100, 200
//Call AddNumber2(1000,500)
End Sub
注:当我们传递给带参数的子程序参数值的时候,一定要注意数量能够完全匹配,否则,就会报错
可选参数:(可能有值,可能没有值)
用Optional修饰
eg.
Sub AddNumbers可选参数(Num1 As Integer,Num2 As Integer,Optional Num3 As Integer)
Dim Sum As Integer
Sum = Num1+Num2+Num3
Debug.Print "相加结果:" & Sum
End Sub
Sub TestSub()
Call AddNumbers可选参数(10,20)
End Sub
注意:1. 可选参数,只能放在最后
2. 可选参数,可以设置默认值;如果没有传递参数值给可选参数,就会使用默认值,如果传递了参数值,就会使用传递的参数值
eg.
Sub AddNumbers可选参数(Num1 As Integer,Num2 As Integer,Optional Num3 As Integer = 100)
Dim Sum As Integer
Sum = Num1+Num2+Num3
Debug.Print "相加结果:" & Sum
End Sub
Sub TestSub()
Call AddNumbers可选参数(10,20)
End Sub
可变参数:
传动态数组,用ParamArray修饰
eg.
Sub AddNumbers可变参数(ParamArray Numbers() As Variant)
Dim Sum As Double,Index As Integer
For Index = LBound(Numbers) To UBound(Numbers)
Sum = Sum + Numbers(Index)
Next Index
Debug.Print "相加结果:" & Sum
End Sub
Sub TestSub2()
AddNumbers可变参数 100,200,300
End Sub
注意:1. 可变参数,只能放在最后
2. 可变参数只能设置为Variant类型
数组参数:
eg.
Sub AddNumbers数组参数 (Numbers As Variant)
Dim Sum As Double,Index As Integer
For Index = LBound(Numbers) To UBound(Numbers)
Sum = Sum + Numbers(Index)
Next Index
Debug.Print "相加结果: " & Sum
End Sub
Sub TestSub()
Dim MyArray(1 To 4) As Integer
MyArray(1) = 10
MyArray(2) = 20
MyArray(3) = 30
MyArray(4) = 40
AddNumbers数组参数(MyArray)
//使用Array函数所生成的一维数组
Dim MyArray2 As Variant
MyArray2 = Array(10,20,30,40,50)
AddNumbers数组参数(MyArray2)
End Sub
子程序参数传递:
引用传递 —— ByRef
传递的是参数的内存地址或引用,可以修改原始变量的值
默认参数传递方式:ByRef
eg.
注:如果是数组使用了引用传递,数组数据同样会被修改
值传递 —— ByVal
传递的是参数的值的副本,不影响原始变量的值
eg.
Exit Sub退出子程序
eg.
子程序修饰符:
公共子程序 —— Public
所有模块中的所有子程序都可以访问,默认修饰符为Public
eg.
另外模块也可以调用:
私有子程序 —— Private
当前模块的所有子程序才能访问
eg.
静态子程序 —— Static
想让子程序内部所有的局部变量都保持之前的数据 —— 子程序前写Static
注 :只针对某一个变量,把它设置为静态变量 —— 只针对某个变量前面加上Static
eg.
函数特点:
子程序Sub没有返回值,函数Function有返回值
函数语法:
[修饰符] Function 函数名 ([参数1,参数2,参数3...]) [As 数据类型]
代码块
End Function
函数调用:
变量 = 函数名[(参数1,参数2,参数3...)]
eg.
注:使用函数的优势在于 我们可以拿到结果之后,进一步进行加工处理
在Excel工作表中也可以调用函数
退出函数
Exit Function
返回值为数组的函数:
注: