VBA —— 学习Day5
子程序与函数
子程序:实现特定功能的程序代码块
子程序语法:
[修饰符] 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