Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 10175|回复: 20

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

[复制链接]
发表于 2013-11-15 00:08 | 显示全部楼层 |阅读模式
本帖最后由 hwc2ycy 于 2013-12-4 09:05 编辑

  会写Excel 公式的同学一定对参数不陌生了。SUMAVERAGE函数这都是需要参数的。另外例如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

评分

参与人数 3 +17 收起 理由
LianYu9X9 + 1 赞一个!
yyyydddd8888 + 6 很给力!特别感谢!
youfang + 10 烟花辛苦了,午夜还在为论坛付出

查看全部评分

发表于 2013-11-15 10:45 | 显示全部楼层
学习参数,也就是一个变量名,通过它,在过程内就知道调用时所传过来的参数值。
回复

使用道具 举报

发表于 2013-11-17 12:51 | 显示全部楼层
参数的作用,是什么,能不能详细说明下。看不懂一楼意义。
回复

使用道具 举报

发表于 2013-11-17 12:52 | 显示全部楼层
或者在示例,后说明达到什么效果?可以吗
回复

使用道具 举报

发表于 2013-11-20 12:42 | 显示全部楼层
{:1112:}
回复

使用道具 举报

发表于 2013-12-16 08:55 | 显示全部楼层
谢谢老师
回复

使用道具 举报

发表于 2013-12-26 08:12 | 显示全部楼层
谢谢老师的無私奉獻
回复

使用道具 举报

发表于 2014-1-4 11:48 | 显示全部楼层
谢谢老师
回复

使用道具 举报

发表于 2014-1-27 15:46 | 显示全部楼层
修炼第21集中
回复

使用道具 举报

发表于 2014-3-6 11:27 | 显示全部楼层
有点云里雾里呢,老师
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-2 14:24 , Processed in 0.256772 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表