vb变量、常数和数据类型及过程概述(十)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

vb变量、常数和数据类型及过程概述(十)
发布时间:2007-05-05 来源:作者:
标准模块中的过程
如果过程名是唯一的,则不必在调用时加模块名。

无论是在模块内,还是在模块外调用,结果总会引用这个唯一过程。

如果过程仅出现在一个地方,这个过程就是唯一的。

如果两个以上的模块都包含同名的过程,那就有必要用模块名来限定了。

在同一模块内调用一个公共过程就会运行该模块内的过程。

例如,对于Module1 和Module2 中名为CommonName 的过程,从Module2 中调用CommonName 则运行Module2 中的CommonName过程,而不是Module1中的CommonName 过程。

从其它模块调用公共过程名时必须指定那个模块。

例如,若在Module1 中调用Module2 中的CommonName 过程,要用下面的语句:
monName (arguments)
向过程传递参数
过程中的代码通常需要某些关于程序状态的信息才能完成它的工作。

信息包括在调用过程时传递到过程内的变量。

当将变量传递到过程时,称变量为参数。

参数的数据类型
过程的参数被缺省为具有V ariant 数据类型。

不过,也可以声明参数为其它数据类型。

例如,下面的函数接受一个字符串和一个整数:
Function WhatsForLunch(WeekDay As String, Hour _
As Integer) As String
'根据星期几和时间,返回午餐菜单。

If WeekDay = "Friday" then
WhatsForLunch = "Fish"
Else
WhatsForLunch = "Chicken"
End If
If Hour > 4 Then WhatsForLunch = "Too late"
End Function
详细信息关于V isual Basic 的数据类型,请参阅本章前面部分。

也可以在语言参考中查找指定的数据类型。

按值传递参数按值传递参数时,传递的只是变量的副本。

如果过程改变了这个值,则所作变动只影响副本而不会影响变量本身。

用ByV al 关键字指出参数是按值来传递的。

例如:
Sub PostAccounts (ByV al intAcctNum as Integer)
.
. '这里放语句。

.End Sub
按地址传递参数
按地址传递参数使过程用变量的内存地址去访问实际变量的内容。

结果,将变量传递给过程时,通过过程可永远改变变量值。

按地址传递参数在Visual Basic 中是缺省的。

如果给按地址传递参数指定数据类型,就必须将这种类型的值传给参数。

可以给参数传递一个表达式,而不是数据类型。

Visual Basic 计算表达式,如果可能的话,还会按要求的类型将值传递给参数。

把变量转换成表达式的最简单的方法就是把它放在括号内。

例如,为了把声明为整数的变量传递给过程,该过程以字符串为参数,则可以用下面的语句:
Sub CallingProcedure ()
Dim intX As Integer
intX = 12 * 3
Foo (intX)
End Sub
Sub Foo (Bar As String)
MsgBox Bar'Bar 的值为字符串‘36 ’。

End Sub
使用可选的参数
在过程的参数列表中列入Optional 关键字,就可以指定过程的参数为可选的。

如果指定了可选参数,则参数表中此参数后面的其它参数也必是可选的,并且要用Optional 关键字来声明。

下面两段示例代码假定有一个窗体,其内有一命令按钮和一列表框。

例如,这段代码提供所有可选参数:
Dim strName As String
Dim strAddress As String
Sub ListText(Optional x As String, Optional y _
As String)
List1.AddItem x
List1.AddItem y
End Sub
Private Sub Command1_Click ()
strName = "yourname"
strAddress = 12345'提供了两个参数。

Call ListText (strName, strAddress)
End Sub
而下面的代码并未提供全部可选参数:
Dim strName As String
Dim varAddress As V ariant
Sub ListText (x As String, Optional y As V ariant)
List1.AddItem x
If Not IsMissing (y) Then
List1.AddItem y
End If
End Sub
Private Sub Command1_Click ()
strName = "yourname"'未提供第二个参数。

Call ListText (strName)
End Sub
在未提供某个可选参数时,实际上将该参数作为具有Empty 值的变体来赋值。

上例说明如何用IsMissing 函数测试丢失的可选参数。

相关文档
最新文档