【烟花原创】VBA零基础之第21篇细说参数(一)

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

【烟花原创】VBA零基础之第21篇细说参数(一)
会写Excel 公式的同学一定对参数不陌生了。

象SUM,AVERAGE 函数这都是需要参数的。

另外例如LEFT函数,第2个参数在省略的情况下,就默认值为1。

接下来的几章我们就好好聊聊过程的参数。

参数,也就是一个变量名,通过它,在过程内就知道调用时所传过来的参数值。

参数的声明在声明的过程时就必须完成声明(有参数才需要声明)Sub 过程名(参数变量列表)
如果要声明多个参数,则各个参数变量名之间用逗号隔开。

例如
Sub SubComputeArea(Length, Width)
该过程就有两个参数(类型没有指定,则为Variant类型)
如果要指定参数的类型为Long(长整形),可以这样写
Sub SubComputeArea(Length as long ,Width as long)
需注意的地方是,声明过的参数,不要在声明的过程内部再进行声明,否则会提示声明重复的错误提示。

例如下面的代码在过程内部再次声明参数的变量名,就是错误的。

Sub SubComputeArea(Length as long ,TheWidth as long)
Dim Length as long , TheWidth as long
End sub
可选参数,故名思议,表明这个参数是可选的,一般建议可选参数指定一个缺省值。

Optional 变量名 as 类型 = 缺省值
声明可选参数时,可选参数的后面只能再跟上可选参数。

示例
Sub SubComputeArea(Length as long , optionalWidth as
long=100)
‘最后一个参数为可选参数
Sub SubComputeArea(Optional Length as long=100, Optional Width as long=100)
‘两个参数都是可选参数
Sub SubComputeArea(optional Length as long=100, Width as long)
‘声明有误,可选参数后面的参数只能是可选参数,会提示缺少Optional
下面给出完整的代码演示
Sub Main()
Dim i As Long, j As Long
i= 200: j = 200
Call SubComputeArea1(200)
Call SubComputeArea1(200, 200)
Call SubComputeArea1(i, 200)
Call SubComputeArea1(200, j)
Call SubComputeArea1(i, j)
Call SubComputeArea2
Call SubComputeArea2(Width:=300)
Call SubComputeArea2(300)
End Sub
Sub SubComputeArea1(Length As Long,Optional Width As Long = 100)
Dim strMsg As String
strMsg = "SubComputeArea1(Length As Long, Optional
Width As Long =100)" & vbNewLine
strMsg = strMsg & "可选参数Width 的缺省值为:100"& vbNewLine
strMsg = strMsg & "length = " & Length & vbNewLine
strMsg = strMsg & "width = " & Width & vbNewLine
strMsg = strMsg & "结果:length * Width =" & Length * Width
MsgBox strMsg
End Sub
'最后一个参数为可选参数
Sub SubComputeArea2(Optional Length As Long= 100, Optional Width As Long = 200)
Dim strMsg As String
strMsg = "SubComputeArea2(Optional Length As Long = 100, OptionalWidth As Long = 200)" & vbNewLine
strMsg = strMsg & "可选参数Length 的缺省值为:100"& vbNewLine
strMsg = strMsg & "可选参数Width 的缺省值为:200"& vbNewLine
strMsg = strMsg & "length = " & Length & vbNewLine
strMsg = strMsg & "width = " & Width & vbNewLine
strMsg = strMsg & "结果:length * Width =" & Length * Width
MsgBox strMsg
End Sub
'两个参数都是可选参数
在过程Main中,参数分别用了数值,变量做演示。

通常情况下,传递参数的时候,一般按按照声明的顺序传递。

但是有些过程(特别是对象的方法)的参数比较多,很多都是可选参数。

在输入公式的时候都是用,号带过,这招在VBA中也可以继续使用的。

但推荐使用命名参数的方法分配值,需要指定哪个参数变量的值就输入变量名:=表达式
例如 Call SubComputeArea2(Width:=300)
在使用命名参数的还有个好处,就是可以不用按照过程声明的参数的特定顺序来提供值。

例如:Call SubComputeArea2(Width:=300,Length=400)
在过程SubComputeArea2的参数声明是先Length,然后Width。

如果直接写成Call SubComputeArea2(300, 400)
则length的值为300,width的值为400。

相关文档
最新文档