VBA过程 基本使用

过程的基本使用包括2个步骤:过程的定义、过程的调用。


1、过程的定义

语法

Sub 过程名称(参数列表)
  语句块
End Sub

过程定义以Sub开头,End Sub结束。

过程名称需要符合标识符命名规则。

参数列表可以为空,也可以根据需要设计1到多个参数。

语句块可以是1条或者多条语句,也可以调用其它过程。


无参数的过程我们前面已经自定义了很多,主要讲解带参数的过程。


定义参数

Sub 过程名称(参数1 As 数据类型1 , 参数2 As 数据类型2,…参数n As 数据类型n)
  语句块
End Sub

参数的作用:调用过程时可以传入不同的参数值,过程根据实际参数值进行运算。

这里的参数称为形参。


示例:求a与b的和。

Sub sum1(a As Integer, b As Integer)
  Dim c As Integer
  c = a + b
  Debug.Print "sum:" & c
End Sub

过程体中的内容3句代码可以合为1句代码,这里为说明函数的封装性,故意写为多句。

形参a、b为自定义,也可以改成别的名字,过程体中的代码使用a、b的地方也相应修改即可。

例如:将a、b修改为x、y。两个函数是完全等价的。

Sub sum1(x As Integer, y As Integer)
  Dim c As Integer
  c = x + y
  Debug.Print "sum:" & c
End Sub

2、过程的调用

语法

过程名称 参数1 , 参数2…参数n

过程名称与参数之间用空隔分开,参数之间用逗号分开。

这里的参数为实参。

运行过程中,实值的值会传递给形参。


如果没有参数,写直接写过程名称调用

过程名称

也可以通过Call进行调用

Call 过程名称( 参数1, 参数2…参数n)

过程名称后的参数需要小括号包括起。


注意事项:

带参数的过程无法通过VBA的运行按钮直接运行,只有无参数的过程才能直接运行。


示例:在过程sum1_call中调用sum1。

Sub sum1_call()
  '调用过程
   sum1 20, 23   '输出43
   Call sum1(20, 23) '输出43
End Sub

3、完整示例

求1、2、3…到n的和。完整代码如下。

Sub sum2(n As Integer)
  Dim i As Integer '声明循环变量
  Dim result As Integer '用于存放和
  result = 0
  
  For i = 1 To n
    result = result + i
  Next

  Debug.Print "sum:" & result
End Sub

Sub sum2_call()
  '调用过程
   sum2 10    '输出55
   sum2 100    '输出5050
End Sub

复杂计算封装到过程中,过程的设计会比较复杂;一旦过程设计好,调用非常简单。即一劳永逸。

通过参数,可以到1到10、1到100,任意指定参数都可以,使得过程的功能更加灵活。