子过程与子函数的区别总结
Sub 和 Function 是VBA提供的两种封装体。
- 利用宏录制得到的就是Sub
- 子过程本身是宏, 可以在 Excel , 而函数不会被看作一个宏, 无法像执行宏一样, 单独执行一个函数
- 函数可以在Excel表格中像一般的Excel函数那样使用,但过程不可以
- 过程可以指定给Excel表格中的按钮或者图片等对象,但是函数不可以
- 函数只能在被调用时执行,比如在过程中调用,或者在另一个函数中调用,或者在Excel表格中调用。但不能直接在表格中像运行宏一样执行,而过程是可以的
- 数括号后面的
As 数据类型
虽然并不是必须的,但是我强烈建议加上,因为函数通常都需要有返回值。如果一个函数不返回值,它与子过程并无区别,其中调用方式与子过程相同。因此我们建议,不需要返回值时,直接使用子过程代替函数 - 函数体最后通常都带有一条返回值语句,把函数执行的结果赋值给函数名,就可以在调用这个函数的地方得到这个函数的执行结果。这个返回结果的数据类型应该与函数名后面As的数据类型一致,否则可能会出错
- 特别注意:当使用 Call 语法显式声明子函数或子过程时,子过程的参数必须在括号内。若省略 Call 关键字,则子过程省略参数两边的括号。
总结一下,调用子过程和子函数:
- 无参的子过程:直接写子过程名就调用了,也不用写小括号;
有参的子过程:[过程名] 多个参数用逗号(,)分开即可 不用将其括号包起来 - 无参的子函数:直接写函数名就调用了,也不用写小括号;
有参的子函数:[函数名] 多个参数用逗号(,)分开并将其小括号包起来
作者QQ4577105