简明Excel VBA
本文集同步于GitHub仓库:# Youchien/concise-excel-vba
1.6 过程和函数
Sub和Function 是VBA提供的两种封装体,利用宏录制器得到的就是Sub
。
两者的区别不大,Sub
不需要返回值,Function
可以定义返回值和返回的类型。
1.6.1 Sub过程
[Private|Public] [Static] Sub 过程名([参数列表 [As 数据类型]])
[语句块]
End Sub
' [Private|Public]定义过程的作用范围
' [Static]定义过程是否为静态
' [参数列表]定义需要传入的参数
调用Sub
的方法有三种,使用Call
、直接调用和Application.Run
举个例子:
image.png
1.6.2 Function函数
vba内部提供了大量的函数,也可以通过Function
来定义函数,实现个性化的需求。
[Public|private] [Static] Function 函数名([参数列表 [As 数据类型]]) [As 数据类型]
[语句块]
[函数名=过程结果]
End Function
使用函数完成上面的例子:
image.png
参数传递
参数传递的方式有两种,引用和传值。
传值,只是将数据的内容给到函数,不会对数据本身进行修改。
引用,将数据本身传给函数,在函数内部对数据的修改将同样的影响到数据本身的内容。
参数定义时,使用ByVal
关键字定义传值,子过程中对参数的修改不会影响到原有变量的内容。
默认情况下,过程是按引用方式传递参数的。在这个过程中对参数的修改会影响到原有的变量。
也可以使用ByRef
关键字显示的声明按引用传参。
Sub St1(ByVal n As Integer, ByRef range)
...Other code
End SUb
网友评论