Sub子过程与Function函数过程有什么区别?

2024-11-23 08:35:45
推荐回答(2个)
回答1:

function是函数,sub是子程序,都可以传递参数,但函数有返回值,子程序没有\x0d\x0afunction 可以用自身名字返回一个值,sub 需定义别的变量,用传址方式传回值。 \x0d\x0a Sub 过程与Function 过程的区别: \x0d\x0a 1. Sub 过程定义时无需定义返回值类型,而Function 过程一般需要用“As 数据类型” 定义函数返回值类型。 \x0d\x0a 2. Sub 过程中没有对过程名赋值的语句,而Function 过程中一定有对函数名赋值的语句。 \x0d\x0a 3. 调用过程:调用 Sub 过程与 Function 过程不同。调用 Sub 过程的是一个独立的语句,而调用函数过程只是表达式的一部分。Sub 过程还有一点与函数不一样,它不会用名字返回一个值。但是,与 Function过程一样,Sub 过程也可以修改传递给它们的任何变量的值。 \x0d\x0a 4. 调用 Sub 过程有两种方法: \x0d\x0a 以下两个语句都调用了名为 MyProc 的 Sub 过程。 \x0d\x0a Call MyProc (FirstArgument, SecondArgument) \x0d\x0a MyProc FirstArgument, SecondArgument \x0d\x0a 注意当使用 Call 语法时,参数必须在括号内。若省略 Call 关键字,则也必须省略参数两边的括号。\x0d\x0a\x0d\x0a区别就是:子过程没有返回值,函数过程有返回值。\x0d\x0a子过程用于编写一些代码的集合,函数过程用于建立函数。我兴个例吧。\x0d\x0a例如,我要做多处要做如下事件,我只要编写一个子过程,在其它事件下,我只要把子过程的名称写下就行了。\x0d\x0aPrivate Sub ABC(A As Integer, B As Integer, C As Integer)\x0d\x0a A = 1\x0d\x0a B = 1\x0d\x0a C = 1\x0d\x0aEnd Sub\x0d\x0a \x0d\x0aPrivate Sub Command1_Click()\x0d\x0aABC '按扭一就调用了该子过程了,而不用再写子过程的代码。\x0d\x0aEnd Sub\x0d\x0a \x0d\x0aPrivate Sub Command2_Click()\x0d\x0aABC '按扭二就调用了该子过程了,而不用再写子过程的代码。\x0d\x0aEnd Sub\x0d\x0a \x0d\x0aPrivate Sub Command3_Click()\x0d\x0aABC '按扭三就调用了该子过程了,而不用再写子过程的代码。\x0d\x0aEnd Sub\x0d\x0a \x0d\x0a函数例子:\x0d\x0a如我要多处运用C=A+B这个算法,我可以编写这个函数:\x0d\x0aPrivate Function C (A As Integer, B As Integer) As Integer\x0d\x0aC = A + B\x0d\x0aEnd Function\x0d\x0a \x0d\x0aPrivate Sub Command1_Click()\x0d\x0aText1.Text = C(5, 3) '这里就运用了函数C来计算5+3了。\x0d\x0aEnd Sub\x0d\x0a \x0d\x0aPrivate Sub Command2_Click()\x0d\x0aText1.Text = C(4, 2) '这里就运用了函数C来计算4+2了。\x0d\x0aEnd Sub

回答2:

function是函数,sub是子程序,都可以传递参数,但函数有返回值,子程序没有
function 可以用自身名字返回一个值,sub 需定义别的变量,用传址方式传回值。
Sub 过程与Function 过程的区别:
1. Sub 过程定义时无需定义返回值类型,而Function 过程一般需要用“As 数据类型” 定义函数返回值类型。
2. Sub 过程中没有对过程名赋值的语句,而Function 过程中一定有对函数名赋值的语句。
3. 调用过程:调用 Sub 过程与 Function 过程不同。调用 Sub 过程的是一个独立的语句,而调用函数过程只是表达式的一部分。Sub 过程还有一点与函数不一样,它不会用名字返回一个值。但是,与 Function过程一样,Sub 过程也可以修改传递给它们的任何变量的值。
4. 调用 Sub 过程有两种方法:
以下两个语句都调用了名为 MyProc 的 Sub 过程。
Call MyProc (FirstArgument, SecondArgument)
MyProc FirstArgument, SecondArgument
注意当使用 Call 语法时,参数必须在括号内。若省略 Call 关键字,则也必须省略参数两边的括号。

区别就是:子过程没有返回值,函数过程有返回值。
子过程用于编写一些代码的集合,函数过程用于建立函数。我兴个例吧。
例如,我要做多处要做如下事件,我只要编写一个子过程,在其它事件下,我只要把子过程的名称写下就行了。
Private Sub ABC(A As Integer, B As Integer, C As Integer)
A = 1
B = 1
C = 1
End Sub

Private Sub Command1_Click()
ABC '按扭一就调用了该子过程了,而不用再写子过程的代码。
End Sub

Private Sub Command2_Click()
ABC '按扭二就调用了该子过程了,而不用再写子过程的代码。
End Sub

Private Sub Command3_Click()
ABC '按扭三就调用了该子过程了,而不用再写子过程的代码。
End Sub

函数例子:
如我要多处运用C=A+B这个算法,我可以编写这个函数:
Private Function C (A As Integer, B As Integer) As Integer
C = A + B
End Function

Private Sub Command1_Click()
Text1.Text = C(5, 3) '这里就运用了函数C来计算5+3了。
End Sub

Private Sub Command2_Click()
Text1.Text = C(4, 2) '这里就运用了函数C来计算4+2了。
End Sub