vb中“function”和“sub”的区别是什么

vb中“function”和“sub”的区别是什么,第1张

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

Sub 语句

描述

声明 Sub 过程的名称、参数以及构成其主体的代码。

语法

[Public | Private] Sub name [(arglist)]

[statements]

[Exit Sub]

[statements]

End Sub

Sub 语句的语法包含以下部分

部分 描述

Public 表示 Sub 过程可被所有 Script 中的所有其他过程访问。

Private 表示 Sub 过程只可被声明该过程的 Script 中的其他过程访问。

Name Sub 的名称,遵循标准变量命名约定。

Arglist 代表在调用时要传递给 Sub 过程的参数的变量列表。用逗号隔开多个变量。

Statements 在 Sub 过程主体内所执行的任何语句组。

arglist 参数包含下列语法和部分:[ByVal | ByVal] varname[( )]

部分 描述

ByVal 表示该参数按值传递。

ByRef 表示该参数按引用传递。

Varname 代表参数的变量名称,遵循标准变量命名约定。

说明

如没有显式地指定使用 Public 或 Private,则 Sub 过程默认为公用,即它们对于 Script 中的所有其他过程都是可见的。Sub 过程中局部变量的值在调用过程中不被保留。

所有可执行代码必须包含于过程中。不能在另一个 Sub 或 Function 过程中定义一个 Sub 过程。

使用 Exit Sub 语句可以立即从 Sub 过程中退出。程序继续执行调用 Sub 过程的语句之后的语句。可以在 Sub 过程中任意位置出现任意个 Exit Sub 语句。

与 Function 过程相似之处是:Sub 过程是一个可以获取参数,执行一系列语句以及可改变其参数的值的独立过程。而与 Function 过程不同之处是:Function 过程可以返回值,而 Sub 过程不能用于表达式中。

可以使用过程名并跟随相应的参数列表来调用 Sub 过程。关于如何调用 Sub 过程的详细说明信息,请参阅 Call 语句。

小心 Sub 过程可以是递归的,即该过程可以调用自己来完成某个给定的任务。但是递归可能会导致堆栈溢出。

在 Sub 过程中使用的变量分为两类:一类是在过程内显式声明的,另一类则不是。在过程内显式声明的变量(使用 Dim 或等效方法)总是局部变量。对于那些没有在过程中显式声明的变量也是局部的,除非在该过程外更高级别的位置显式地声明它们。

小心 过程可以使用没有在过程内显式声明的变量,但只要有任何 script 级定义的名称与之同名,就会产生名称冲突。如果过程中引用的未声明的变量与其他的过程、常数或变量的名称相同,则会认为过程引用的是Script 级的名称。显式声明变量可以避免这类冲突,使用 Option Explicit 语句可强制显式声明变量。

Visual Basic 语言概念

Sub 过程

Sub 过程是包含在 Sub 语句和 End Sub 语句中的一系列 Visual Basic 语句。每次调用过程时都执行过程中的语句,从 Sub 语句后的第一个可执行语句开始,到遇到的第一个 End Sub、Exit Sub 或 Return 语句结束。

Sub 过程执行 *** 作但并不返回值。它能够带参数,如呼叫代码传递给它的常数、变量或表达式。

声明 Sub 过程的语法如下所示:

[accessibility] Sub subname[(argumentlist)]

' Statements of the Sub procedure go here

End Sub

可访问性可以是 Public、Protected、Friend、Protected Friend 或 Private。

可以在模块、类和结构中定义 Sub 过程。默认情况下它们是 Public,这意味着可以从应用程序中的任意位置调用它们。

参数声明

声明过程的每个参数与声明变量的方法一样,都是指定参数名和数据类型。也可以指定传递机制,以及参数是否可选。

参数列表中每个参数的语法如下所示:

[Optional] [ByVal|ByRef] [ParamArray] argumentname As datatype

如果参数是可选的,则还必须在其声明中提供默认值,如下所示:

Optional [ByVal|ByRef] argumentname As datatype = defaultvalue

调用语法

可以使用独立的调用语句来显式调用 Sub 过程。不能在表达式中使用其名称来调用它。调用语句必须提供所有非可选参数的值,并且必须用括号将参数列表括起来。如果未提供任何参数,则也可以选择省略括号。Call 关键字的使用也是可选的。

调用 Sub 过程的语法如下所示:

[Call] subname[(argumentlist)]

下面的 Sub 过程通知计算机 *** 作员应用程序将要执行哪个任务,并且还显示一个时间戳。应用程序不是在每个任务的开头重复此代码,而仅是从不同的位置调用 TellOperator。每次调用都会传递 Task 参数中的字符串以标识开始执行的任务。

Sub TellOperator(ByVal Task As String)

Dim Stamp As Date ' Stamp is local to TellOperator

Stamp = TimeOfDay() ' Get current time for time stamp

' Use MessageBox class of SystemWindowsForms namespace

MessageBoxShow("Starting " & Task & " at " & CStr(Stamp))

End Sub

典型的 TellOperator 调用如下所示:

Call TellOperator("file update")

请参见

过程 | 事件处理过程 | Function 过程 | Property 过程 | 过程参数 | Sub 语句

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 关键字,则也必须省略参数两边的括号。

sub 是程序开始部分

sub aaa()

aaa代表程序的名称,可以随便你写,但是尽量写得有意义一些,一般的程序不用返回aaa的值,所以括号内无内容,如果是自定义函数Function可以带参数,或系统自带的Worksheet_Change等括号内是有参数的。

end sub 是程序结束的标志。

以上就是关于vb中“function”和“sub”的区别是什么全部的内容,包括:vb中“function”和“sub”的区别是什么、谁来给我说vb中的sub是什么意思或者什么作用、vb中function和sub的区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10177122.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存