模块与VBA编程基础3子过程的定义与调用[Pubic|Private][Static]Sub子过程名([形参])[<子过程语句>][ExitSub][<子过程语句>]EndSub过程调用:Call子过程([<实参>])子过程名[<实参>]1过程调用定义过程的参数,称为形参使用Public关键字,则模块的所有过程都可以调用它使用Private关键字,这个函数只适用于同一个模块的其他过程1过程调用定义输出绝对值的子过程调用子过程Subaabs(xAsInteger)Ifx>=*-1EndIfEndSubSubt()"*******"Callaabs(5)Callaabs(-3)"---------"aabs5aabs-"*******"EndSub函数过程的定义和调用[public|private][static]function函数过程名([<形参>])[as类型][<函数过程语句>][函数过程名=<表达式>][exitfunction][<函数过程语句>][函数过程名=<表达式>]Endfunction调用:函数过程名([<实参>])赋值:变量=函数过程名([<实参>])1过程调用使用Public关键字,则所有模块的所有过程都可以调用它使用Private关键字,这个函数只适用于同一个模块的其他过程1过程调用求圆面积的函数过程S的值为area(5)的返回值FunctionArea(R!)AsSingleifR<0thenMsgbox“圆的半径必须为正数值”,vbcritical,”警告”Area=0’函数返回值ExitFunctionEndifArea=*R*R’函数返回值EndFunctionSubproc1s=Area(5)Endproc1不能使用call调用Area过程,即CallArea(5)是错误的形参:过程定义的参数,无实际值实参:调用含参数过程时,主调过程的调用式必须提供相应的实参(实际参数),有实际值,可以是常量、变量、表达式调用含参数的函数时,存在实参向形参传递的过程Functionsum(xasinteger,yasinteger)Sum=x+yEndFunctionSubpr()Dima%,b%A=5:b=(5,6)(a,b)EndSub2参数传递形参实参实参形参完整的定义格式:[Optional][ByVal|ByRef][ParamArray]形参名称[()][AsType][=v]函数定义:SUBSUM(xAsInteger,y%)······两个整型形参,参数按址调用SUBPA(ByValfasInteger)·······一个整型形参,参数按值调用SUBPB(ByReffasInteger)·······一个整型形参,参数按址调用2参数传递形参名称是必需的形参的数据类型设置该参数是按值或者是按址传递,ByVal按值,ByRef按址;缺省ByRef2参数传递按值调用,实参单向传递给形参,输出结果:5缺省是按址调用,实参双向传递给形参处理,实参发生改变,输出结果:7PrivateSubtest_Click()DimJAsIntegerJ=5CallGetData(J)MsgBoxJEndSubPrivateSubGetData(ByValfAsInteger)f=f+2EndPrivateSubtest_Click()DimJAsIntegerJ=5CallGetData(J)MsgBoxJEndSubPrivateSubGetData(fAsInteger)f=f+2End当参数按值调用(ByVal)时,为”单向”作用形式,即过程调用只是实参的值“单向”传递给形参处理,而被调用的过程内部对形参的任何操作,都不影响实参;当参数按址调用(byRef)时,为“双向”作用形式,即过程调用是相应位置实参的值“双向”传递给形参处理,而被调用过程内部对形参的任何操作,都会作用于实参。错误处理,一般的语法如下:oTo标号遇到错误发生时,程序转移到标号所指位置代码执行OnErrorResumeNext遇到错误发生时忽略错误,oto0用于关闭错误处理,出错时不处理,然后出现一个对话框显示出相应的出错信息3VBA程序运行错误处理这边使用了GoTo语句实现跳转断点:设置一个位置点以中断程序的执行本地窗口其内部自动显示出所有在当前过程中的变量声明和变量值,从中可以观察各种数据信息。监视窗口通过在监视窗口增添监视表达式的方法,程序可以动态了解一些变量和表达式的值的变化状况,进而对代码的正确与否由清楚的判断。立即窗口在中断模式下安排
§8.3模块与vba编程基础vba···· 来自淘豆网m.daumloan.com转载请标明出处.