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

标准模块中的过程
如果过程名是唯一的,则不必在调用时加模块名。无论是在模块内,还是在模块外调用,结果总会引用这个唯一过程。如果过程仅出现在一个地方,这个过程就是唯一的。
如果两个以上的模块都包含同名的过程,那就有必要用模块名来限定了。在同一模块内调用一个公共过程就会运行该模块内的过程。例如,对于Module1 和 Module2 中名为 CommonName 的过程,从 Module2 中调用CommonName 则运行 Module2 中的CommonName过程,而不是 Module1中的 CommonName 过程。
从其它模块调用公共过程名时必须指定那个模块。例如,若在 Module1 中调用 Module2 中的 CommonName 过程,要用下面的语句:
Module2.CommonName (arguments)

向过程传递参数
过程中的代码通常需要某些关于程序状态的信息才能完成它的工作。信息包括在调用过程时传递到过程内的变量。当将变量传递到过程时,称变量为参数。

参数的数据类型
过程的参数被缺省为具有 Variant 数据类型。不过,也可以声明参数为其它数据类型。例如,下面的函数接受一个字符串和一个整数:
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
详细信息 关于 Visual Basic 的数据类型,请参阅本章前面部分。也可以在语言参考中查找指定的数据类型。

按值传递参数按值传递参数时,传递的只是变量的副本。如果过程改变了这个值,则所作变动只影响副本而不会影响变量本身。用 ByVal 关键字指出参数是按值来传递的。
例如:
Sub PostAccounts (ByVal 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 Variant

Sub ListText (x As String, Optional y As Variant)
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 函数测试丢失的可选参数。

时间: 2024-12-30 16:37:43

vb变量、常数和数据类型及过程概述(十)的相关文章

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

常数 经常会发现代码包含一些常数值,它们一次又一次地反复出现.还可发现,代码要用到很难记住的数字,而那些数字没有明确意义.在这些情况下,可用常数大幅度地改进代码的可读性和可维护性.常数是有意义的名字,取代永远不变的数值或字符串.尽管常数有点像变量,但不能像对变量那样修改常数,也不能对常数赋以新值.常数有两种来源:1.内部的或系统定义的常数是应用程序和控件提供的.在"对象浏览器"中的 Visual Basic ( VB ) .和 Visual Basic for applications

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

过程概述 将程序分割成较小的逻辑部件就可以简化程序设计任务.称这些部件为过程,它们可以变成增强和扩展 Visual Basic 的构件. 过程可用于压缩重复任务或共享任务,例如,压缩频繁的计算.文本与控件操作和数据库操作.用过程编程有两大好处:1.过程可使程序划分成离散的逻辑单元,每个单元都比无过程的整个程序容易调试.2.一个程序中的过程,往往不必修改或只需稍作改动,便可以成为另一个程序的构件.在 Visual Basic 中使用下列几种过程:Sub 过程不返回值.Function 过程返回值.

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

在Visual Basic环境下进行计算时,常常需要临时存储数据.例如,可能想要计算几个值,将它们进行比较,并根据比较的结果对它们进行不同的操作.如果想要比较这些值,就要存储它们,但不必把它们存入属性.像大多数编程语言那样,Visual Basic 使用变量来存储值.变量具有名字(用来引用该变量所含的值的名词)和数据类型(确定变量可以存储的数据的种类).数组可以用来存储建立了索引的相关变量集. 常数也存储数值,顾名思义,在整个应用程序执行过程中,这些值都保持不变.常数的使用增加了代码的可读性,因

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

Numeric 数据类型Visual Basic 支持几种 Numeric 数据类型:Integer(整型).Long(长整型).Single(单精度浮点型).Double(双精度浮点型)和 Currency(货币型).与 Variant 类型相比,Numeric 类型占用的存储空间通常要少.如果知道变量总是存放整数(如 12 )而不是带小数点的数字(如 3.57),就应当将它声明为 Integer 类型或 Long 类型.整数的运算速度较快,而且比其它数据类型占据的内存要少.在 For...N

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

模块内部使用的变量按照缺省规定,模块级变量对该模块的所有过程都可用,但对其它模块的代码不可用.可在模块顶部的声明段用 Private 关键字声明模块级变量,从而建立模块级变量.例如:Private intTemp As Integer在模块级,Private 和 Dim 之间没有什么区别,但 Private 更好些,因为很容易把它和 Public 区别开来,使代码更容易理解. 所有模块使用的变量为了使模块级的变量在其它模块中也有效,用 Public 关键字声明变量.公用变量中的值可用于应用程序的

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

提供可选参数的缺省值 也可以给可选参数指定缺省值.在下例中,如果未将可选参数传递到函数过程,则返回一个缺省值.Sub ListText(x As String, Optional y As _Integer = 12345)List1.AddItem xList1.AddItem yEnd Sub Private Sub Command1_Click ()strName = "yourname" '未提供第二个参数.Call ListText (strName) '添加"yo

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

Variant 变量中存储的 Objects可以将 Objects 存储在 Variant 变量中.当需要高效地处理包括 Objects 在内的各种数据类型时,这可能十分有用.例如,一个数组中的所有元素都必须具有相同的数据类型.将数组的数据类型设置成 Variant 就可将Objects 连同其它数据类型一起存入同一个数组中. 数组如果有过用其它语言编程的经历,那么想必会熟悉数组的概念.由于有了数组,可以用相同名字引用一系列变量,并用数字(索引)来识别它们.在许多场合,使用数组可以缩短和简化程序

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

Object 数据类型Object 变量作为 32 位(4 个字节)地址来存储,该地址可引用应用程序中或某些其它应用程序中的对象.可以随后(用 Set 语句)指定一个被声明为 Object 的变量去引用应用程序所识别的任何实际对象.Dim objDb As ObjectSet objDb = OpenDatabase ("c:\Vb5\Biblio.mdb")在声明对象变量时,请试用特定的类,而不用一般的 Object(例如用 TextBox而不用 Control,或者像上面的例子那样

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

用循环操作数组可以用 For 循环嵌套有效的处理多维数组.例如,在 MatrixA 中基于每个元素在数组中的位置为其赋值:Dim I As Integer, J As IntegerStatic MatrixA(1 To 10, 1 To 10) As DoubleFor I = 1 To 10For J = 1 To 10MatrixA (I, J) = I * 10 + JNext JNext I详细信息 关于循环的详细信息,请参阅本章后面的"循环结构"部分. 动态数组数组到底应该