首页 > 其他分享 >vba 过程(Sub、Function)

vba 过程(Sub、Function)

时间:2023-03-07 15:33:27浏览次数:32  
标签:Function vba Sub 参数 y1 过程 函数

过程是构成程序的一个模块,往往用来完成一个相对独立的功能。过程可以使程序更清晰、更具结构性。

VBA具有四种过程:Sub 过程、Function函数、Property属性过程和Event事件过程。

 

1、Sub过程总是以“sub 过程名()”开头,以“End Sub”结尾,Sub过程不返回运行的结果。

格式如下:

Sub 过程名()

代码 ' 需要在过程中执行的代码

End Sub

过程名后面的括号是必须的,过程可以带参数,就放置在括号里面

Sub 过程的参数有两种传递方式:按值传递(ByVal)和按地址传递(ByRef)。如下例:

Sub password (ByVal x as integer, ByRef y as integer)
      If y=100 then y=x+y else y=x-y
      x=x+100
End sub
Sub call_password ()
      Dim x1 as integer
      Dim y1 as integer
      x1=12
      y1=100
      Callpassword(x1,y1)     ‘调用过程方式:1.Call   过程名(参数1,  参数2…);2.  过程名 参数1, 参数2…
      debug.print x1,y1         ‘结果是12、112,y1按地址传递改变了值,而x1按值传递,未改变原值
End sub

 

 


2、Function总是以“Function 程序名()”开头,以“End Function”结尾,和Sub过程的区别是Function过程可以返回程序运行的值。

Function过程也就是我们说的自定义函数。参数传递也两种:按值传递(ByVal)和按地址传递(ByRef)。

格式如下:

Function 函数名(参数1, 参数2, ...) As 数据类型

' 需要在函数中执行的代码
函数名 = 函数执行后的结果    ' 设置返回值

End Function

函数名后面的括号是必须的,函数通常都带有参数,放置在括号里面。函数也可以不带参数,但这种情况下的函数通常没什么意义。

括号后面的 As 数据类型代表返回值的数据类型,不是必须的。

函数体最后通常都带有一条返回值语句,把函数执行的结果赋值给函数名,就可以在调用这个函数的地方得到这个函数的执行结果。这个返回结果的数据类型应该与函数名后面As的数据类型一致,否则可能会出错。

函数示例:

Function mysum(n1 as Integer, n2 as Integer) As Integer
  Dim s As Integer
  s = n1 + n2
  mysum = s
End Function

 上例中定义了一个名为mysum的函数,它接受两个类型为Integer的参数,并且返回值是Integer类型。在函数内部计算了这两个参数相加的和,并把这个和作为返回值赋给mysum。可以通过调用这个函数,并传递相应的参数,获得它的返回值。

 

 

3.过程的调用

调用过程方式:1.Call 过程名(参数1, 参数2…);2. 过程名 参数1, 参数2…

Callpassword(x1,y1)

 

调用函数:1. 作为一个表达式放在=右端 ; 2. 作为参数使用

if password(x1,y1) then debug.print "123"

 

 

 

标签:Function,vba,Sub,参数,y1,过程,函数
From: https://www.cnblogs.com/shizunatsu/p/17188255.html

相关文章

  • CF1796E Colored Subgraphs
    个人思路:换根。从\(1\)开始DFS遍历。对于一个点,维护\(mx1_u=\min\limits_{v\inchild_u}mx1_v+1\),\(mx2_u\)为\(\min\limits_{v\inchild_u}mx2_v\)和\(m......
  • Sublime快捷键大全
    Ctrl+Shift+P:打开命令面板Ctrl+P:搜索项目中的文件Ctrl+G:跳转到第几行Ctrl+W:关闭当前打开文件Ctrl+Shift+W:关闭所有打开文件Ctrl+Shift+V:粘贴并格式化Ctrl+D:选择单词,重......
  • 209. Minimum Size Subarray Sum
    #题目Givenanarrayofnpositiveintegersandapositiveintegers,findtheminimallengthofacontiguoussubarrayofwhichthesum≥s.Ifthereisn’t......
  • 560. Subarray Sum Equals K
    560.SubarraySumEqualsK标签(空格分隔):leetcodearraymedium题目Givenanarrayofintegersandanintegerk,youneedtofindthetotalnumberofcont......
  • 76. Minimum Window Substring
    76.MinimumWindowSubstring标签(空格分隔):leetcodehard题目GivenastringSandastringT,findtheminimumwindowinSwhichwillcontainallthec......
  • 713. Subarray Product Less Than K
    713.SubarrayProductLessThanK题目Youraregivenanarrayofpositiveintegersnums.Countandprintthenumberof(contiguous)subarrayswherethe......
  • 152. Maximum Product Subarray
    #题目Findthecontiguoussubarraywithinanarray(containingatleastonenumber)whichhasthelargestproduct.Forexample,giventhearray[2,3,-2,4],t......
  • vba 其他循环语句 (goto语句等…)
    (1)Gotoline该语句为跳转到line语句行(2)Onexpressiongosubdestinatioinlist或者onexpressiongotodestinationlist语句为根据exprssion表达式值来跳转到所要的行......
  • vba 错误语句处理
    执行阶段有时会有错误的情况发生,利用OnError语句来处理错误,启动一个错误的处理程序。语法如下:OnErrorGotoLine‘当错误发生时,会立刻转移到line行去OnError......
  • MySQL创建函数报错:1418 - This function has none of DETERMINISTIC, NO SQL, or READ
    创建函数时报错:1418-ThisfunctionhasnoneofDETERMINISTIC,NOSQL,orREADSSQLDATAinitsdeclarationandbinaryloggingisenabled(you*might*wantto......