计算机编程中val,计算机中ByVal n As Integer是什么意思

满意答案

dcebd7a0de6265b6ccae5ead692f1eab.png

pxianggtxs

2016.01.11

dcebd7a0de6265b6ccae5ead692f1eab.png

采纳率:49%    等级:10

已帮助:4418人

按值传递参数

按值传递参数时,传递的只是变量的副本。如果过程改变了这个值,则所作变动只影响副本而不会影响变量本身。用 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"

Optional

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 函数测试丢失的可选参数。

提供可选参数的缺省值

也可以给可选参数指定缺省值。在下例中,如果未将可选参数传递到函数过程,则返回一个缺省值。

Sub ListText(x As String, Optional y As _

Integer = 12345)

List1.AddItem x

List1.AddItem y

End Sub

Private Sub Command1_Click ()

strName = "yourname" '未提供第二个参

'数。

Call ListText (strName) '添加“yourname”和

'“12345”。

End Sub

使用不定数量的参数

一般说来,过程调用中的参数个数应等于过程说明的参数个数。可用 ParamArray 关键字指明,过程将接受任意个数的参数。于是可以这样来编写计算总和的 Sum 函数:

Dim x As Integer

Dim y As Integer

Dim intSum As Integer

Sub Sum (ParamArray intNums ())

For Each x In intNums

y = y + x

Next x

intSum = y

End Sub

Private Sub Command1_Click ()

Sum 1, 3, 5, 7, 8

List1.AddItem intSum

End Sub

用命名的参数创建简单语句

对许多内建函数、语句和方法,Visual Basic 提供了命名参数方法来快捷传递参数值。对命名参数,通过给命名参数赋值,就可按任意次序提供任意多参数。为此,键入命名参数,其后为冒号、等号和值 (MyArgument := "SomeValue") ,可以按任意次序安排这些赋值,它们之间用逗号分开。注意,下例中的参数顺序和所要参数的顺序相反:

Function ListText (strName As String, Optional strAddress As String)

List1.AddItem strName

List2.AddItem strAddress

End Sub

Private Sub Command1_Click ()

ListText strAddress:=”12345”, strName:="Your Name"

End Sub

如果过程有若干不必总要指定的可选参数,则上述内容更为有用。

确定对命名参数的支持

要确定哪一个函数、语句和方法支持命名参数,用“代码”窗口中的“AutoQuickInfo”功能,检查“对象浏览器”,或者参阅语言参考。使用命名参数时要注意以下几点:

在 Visual Basic (VB) 对象库中的对象的方法不支持命名参数。而 Visual Basic for applications (VBA) 对象库中的所有的语言关键字都支持命名的参数。

在语法中,命名参数是用粗体和斜体字表示的。所有其它参数只用斜体字表示。

重点 使用命名参数时不能省略所需参数的输入。可以只省略可选参数。对于 Visual Basic (VB) 和 Visual Basic for applications (VBA) 对象库,“对象浏览器”对话框将可选参数用方括号 [ ] 括起来。

10分享举报

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值