ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:238.53KB ,
资源ID:26028705      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26028705.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第六课 认识过程整理版.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第六课 认识过程整理版.docx

1、第六课 认识过程整理版第六课 认识过程课程重点:过程的定义子过程的语法过程的作用域静态与动态过程过程的命名规则过程的参数执行过程的方法过程的执行流程今天开始真正的进入编程的环节,开始编写代码,前几节都是铺垫,包括学习方法论及让大家重塑信心。1.过程的定义VBA中一段完整的可以执行的语句就叫过程,过程包括子过程、函数过程和属性过程,应用最频繁的是子过程。录制宏产生的过程都是子过程。每个新手刚开始接触的全是子过程。自定义函数属于VBA的综合应用,高级用户才需要以下过程属于子过程的标准格式:Sub 提示() MsgBox 欢迎使用Excel,今天是 & DateEnd Sub大家可以按Alt+F11

2、组合键进入VBE界面,然后单击“插入”“模块”,然后粘贴以上代码,接着按F5键执行代码查看过程的执行结果。使用VBA时95%的情况都是在使用子过程。函数过程的标志是以Function开头,能返回值。以下过程属于函数过程的标准格式:Function 及格率(cell As Range) 及格率 = WorksheetFunction.CountIf(cell, =60) / WorksheetFunction.CountIf(cell, 0) 及格率 = Format(及格率, 0.00%)End Function这是一个自定义函数,我录了一个动画,大家可以了解一下自这一义函数的使用方法。今天课

3、程的重点是子过程,即Sub开头、End Sub结尾的过程。对于自定义函数的开发过程以后有专门的课程讲述2.子过程的语法Private | Public | Friend Static Sub name (arglist) statementsExit Sub statementsEnd Sub这是子过程的语法,比较复杂。这样标示后就不那么复杂了。对于以上语法说明需要补充五点:其一:其中方括号“”中的部分表示可选的,可以根据需要决定是否录入。而“|”符号是并列分隔符,表示它前后的内容属于同一级别,只能选其中一项。例如“Private | Public | Friend Static Sub na

4、me (arglist) ”实际上相当于以下三句:Private Static Sub name (arglist) Public Static Sub name (arglist) Friend Static Sub name (arglist) 其中:Public表示所有模块的所有其它过程都可调用这个Sub过程。Private表示只有当前模块中的其它过程才可以访问当前过程。Friend仅用于类模块中如果这3者都忽略,那么默认当作Public处理,也就是说编写sub过程时,sub之前什么都不写,表示这个过程是公有过程,有使用Public相同的效果。其二:Static用于声明当前过程是动态过程

5、还是静态过程。有Static时表示当前过程是静态过程,其特点是过程中的私有变量的值不会消失;过程无Static时表示当前过程是动态过程,其特点是过程中的私有变量的值将在过程结束后消失。在后面的内容中会有案例展示。其三:括号“()”中的部分表示它是过程的参数。例如“(arglist)”,同时由于参数外边也有方括号,表示参数也是可选的,可以忽略。使用了参数的过程只能通过代码执行,不能通过【Alt+F8】的形式在“宏”对话框中执行此过程。后面会有演示.其四:子过程包含程序外壳和代码两部分,程序外壳包括“Sub name”和最末一句“End Sub”,这是必选项,任何时候不能省略;代码部分可以完全省略

6、,不过代码部分才是程序的主体,省略后就不再有意义,所以通常会至少有一句代码。其五:代码部分“statements”表示过程的任意代码,“Exit Sub”表示终止过程,该代码允许放在过程中的任意位置,通常配合IF使用或者Goto语句使用,表示符合某条件时终止过程。接下来针对以上五点分别阐述。3.过程的作用域主要针对Private | Public 二者讲述。所谓的作用域是指过程的可调用范围。例如过程可在当前模块中调用,那么过程的作用域就是当前模块,如果过程能在所有模块中调用,那么它的作用域就是所有模块。其中Public表示所有模块的所有其它过程都可调用这个Sub过程,甚至可以跨工作簿调用。也称

7、公有过程。Private表示只有当前模块中的其它过程才可以访问当前过程,称为私有过程。私有过程不会显示在工作表界面按“Alt+F8”所打开的“宏”对话框中。以下两个过程都是公有过程:Sub testEnd subPublic Sub testEnd sub现在请大家跟着我操作:插入一个“模块1”,写下代码:如果已经有模块,就不用插入模块了,删除以前的代码,进行下一步就行。在模块中录入三段代码:Private Sub A() MsgBox 123End SubPublic Sub B() MsgBox 123End SubSub C() MsgBox 123End Sub再插入“模块2”,写下代

8、码:Sub test() Call C Call B Call AEnd Sub执行后出现以下错误,表示过程A不可以调用,去掉该句代码即可。由于过程 A使用了Private,所以它是一个私有的过程,只能在模块1中才可以调用,而现在在模块2中调用它,所以不能成功。大家可以删除“ Call A”这一句,再执行过程test,然后弹出两个对话框,表示过程A和B都是可以调用的。因为它们是公有过程,可以跨模块调用。实事上不仅仅是跨模块间的问题,大家可以按Alt+F11返回工作表界面,然后按Alt+F8: 下图结果显示,私有过程是不可以通过Alt+F8执行的所以,当你的过程需要声明是私有的时,在Sub前加上

9、Private就行了。4.静态与动态过程过程中静态还是动态的由Static决定,我们通常写代码时都忽略了这个前置参数,忽略时表示过程是动态的。动态和静态有何分别呢?静态过程特点是过程中的私有变量的值不会消失;动态过程的特点是过程中的私有变量的值将在过程结束后消失。请大家跟着我操作:插入一个空白的模块然后录入以下两个过程:Static Sub test1()b = b + 2MsgBox bEnd SubSub test2()b = b + 2MsgBox bEnd Sub两个过程的分别在于第一个是静态的,第二个是动态的。请先执行第二个过程执行方法是:鼠标单击过程中的任意位置,使过程成为当前过程

10、,然后按F5就行了。最好删除前才的几个过程 ,前面的那三个过程 包括 A、B、C否则会产生干扰。Sub test2()B = B + 2MsgBox BEnd Sub的结果是:永远都是2。此过程的含义是:B = B + 2 表示对变量B在B的原值基础上加2,原值是0,所以B的结果是2MsgBox B 表示将B的结果显示在对话框中此处B是一个变量,变量在过程结果后就自动消失,还原为0所以第二次执行过程时,B又是0,在0的基础上加2,仍然是2Static Sub test1()B = B + 2MsgBox BEnd Sub这是静态过程,过程中的一切私有变量的值都会保留下来,B的原值是0,加2后就

11、成了2此时B的值不会消失,下一次执行代码时在2的基础上再累加。所以就成了4、6、8、10.,这就是动态与静态的分别。当然,工作中很少用静态的过程,此处稍有了解即可5.过程的命名规则我们在编程时,对过程命名有很多规则:(1)首字母不能是数字。(2)不能含有标点符号及空格(3)不能使用系统内置的保留字(4)同一个模块中不能与其它过程同名(5)长度不能超过255以下是一些不合格的过程名称:2008:首字母使用了数字,若用“北京2008”则可以Sub 北京2008() MsgBox I Love VBAEnd SubSub 2008() MsgBox I Love VBAEnd Sub以下是一些不合格

12、的过程名称:2008:首字母使用了数字,若用“北京2008”则可以Sub 北京2008() MsgBox I Love VBAEnd SubSub 2008() MsgBox I Love VBAEnd Sub红色表示过程的命名错了AS:这是系统的保留字,不可用于过程名称。为避免与系统冲突,禁止使用此类名称Sub as() MsgBox I Love VBAEnd SubDate:系统的保留字,不可用于过程名称。为避免与系统冲突,禁止使用此类名称Sub date() MsgBox I Love VBAEnd Sub中国-北京:使用了标点符号之类的特殊符号Sub 中国-北京() MsgBox I

13、 Love VBAEnd SubVBA:这个名称虽然可以作为过程的名称,但是建议不用,它会导致通过“VBA.”调用VBA的函数和常数时失败。但是有了名为VBA的过程后,这招就不灵了,当我们输入vba.时会产生提示信息,帮助我们录入VBA自带的一些函数或者属性。但是有了名为VBA的过程后,这招就不灵了。大家可以测试Range:这个名称虽然也可以使用,但是建议不用,VBA中表示单元格就使用Range,为了避免误导阅读代码者,尽量改用与VBA中的对象、方法、属性名称不同的名称另外,如果在同一个过程中存在多个过程同名时,将无法执行代码,它将导致代码编译错误。下图是执行过程时由于多个过程同名而产生的错误

14、提示: 所谓的“二义性的名称”是指一个名称出现了多次,系统无法判断该执行哪一个。所以看到此类提示时需要马上检查模块中是否存在同名的过程。6.过程的参数过程的参数比较复杂,为什么要用参数也很难短时间内说明白,所以在第8课时专门讲参数,本课时忽略这个内容。7.执行过程的方法执行Sub过程有六种方法:VBE界面中:选择过程后,按F5键,刚才大家试过了,VBE界面中:运行按钮。大家可以找找看,能否看到绿色三角形按钮,工作表界面中:Alt+F8选择宏名称后,单击执行就行。工作表菜单:按钮工作表界面(不是菜单)进入“开发工具”中,单击插入,在上方有一个按钮,单击按钮后,在工作表中拖放即可。 它会自动弹出选

15、择宏的对话框,选择宏名后返回工作表界面,然后单击按钮就能执行了,单击按钮 可以调用指定的Sub过程。工作表界面:快捷键(以后的课程中再详述用代码对过程指定快捷键)工作表界面:菜单(以后的课程中再详述用代码对过程指定快捷键)9.过程的执行流程当一个过程中有多句代码时,代码总是按从上到下的顺序逐句执行。大家可以使用以下简单的语句进行测试:Sub 问候() MsgBox 早上好 MsgBox 中午好 MsgBox 下午好 MsgBox 晚上好End Sub执行过程后,分别弹出4个对话框,按上下顺序执行,VBA允许将多句代码写在同一行中,中间用冒号分隔开即可。当多句代码出现在同一行时则按从左到右的顺序

16、执行。可以通过以下代码验证VBA代码的执行顺序:Sub 问候2() MsgBox 早上好: MsgBox 中午好 MsgBox 下午好: MsgBox 晚上好End Sub请注意中间的冒号.不过可以随时通过“Exit Sub”终止程序,从而使其后面的所有代码都不再执行。例如以下代码中使用了两次Msgbox函数,表示会弹出两个信息提示框。不过由于在中间插入了代码“Exit Sub”,所以第二个Msgbox语句并不会执行,在“Exit Sub”语句处已经结束了过程。Sub 提示() MsgBox Excel很不错! Exit Sub MsgBox VBA也很犀利啊!End Sub由于过程是从上到下

17、执行的,当执行到第二句时“ Exit Sub”结束了过程 所以此处的第三句自动忽略掉了。如果删除第二句,后面的就可以执行如果中途调用了另一个子过程,那么执行完该过程中的所有代码后再执行Call语句后面的代码。以下过程“问候3”中调用了子过程“问候4”,所以执行完“问候4”的两句代码后才执行“问候3”的最后一句代码。Sub 问候3() MsgBox 早上好 Call 问候4 MsgBox 晚上好End SubSub 问候4() MsgBox 中午好 MsgBox 下午好End Sub大家可以测试以下代码由于“ Call 问候4”在“MsgBox 晚上好”之前所以执行完“问候4”所有代码后,再执行

18、“MsgBox 晚上好”当然,VBA也提供了改变执行顺序的办法,从而适应工作中的实际需求使用Goto语句。Goto语句的语法如下:GoTo line其中参数line是标签名称标签就相当于为代码作一个标记,当Goto语句指向此标签时可以改变代码的执行流程,跳转到标签所在位置执行其后的代码。定义标签的方法是在代码之前插入标签名称,以冒号结尾。以下过程“问候5”使用标签A,代码“If Hour(Now) 20 Then GoTo A”表示如果当前时间大于20点,那么执行标签“A”后面的代码,Goto语句到标签A之间的所有代码都将被忽略。Sub 问候5() MsgBox 早上好 If Hour(Now

19、) 20 Then GoTo A 如果时间大于20点,则执行标签“A”后面的代码 MsgBox 中午好 MsgBox 下午好A: 设置一个标签:A MsgBox 晚上好End Sub请大家录入代码后,不要按F5键执行代码,而是按F8键,每按一次执行一句,反复按下F8,可以查看代码的执行流程,F5快捷键 表示瞬间执行过程。F8一次执行一句代码,F8主要用于调试/查看代码。使用Goto语句可以随意更改代码的执行语句,通常配合IF使用,表示符合某条件时执行某语句,符合另一条件时执行另一语句。关于条件语句 If Then 在后面的课程会有讲解。今天的课程就讲到这里,下一次课讲Msgbox和Inputbox因为很多时候举例都要用到这两个语句,所以提前接触一下它们的语法和应用思路。也就是以前的课程中间插入一课,其它的延后。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1