打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
跟烟花入门VBA之21:细说参数(一)

 会写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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
VBA输入框(InputBox)(六)
VBA常用代码解析(第四十讲)
如何用VB取得计算机名
2_2_19_1 - length and width of laminate and preprep
select函数
LeetCode之Construct the Rectangle
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服