1、第一节:认识VBE界面默认的VBE界面包含了:菜单栏、工具栏、工程管理器、代码窗口,如下图:其实VBE界面中还包含了模块、类模块、窗体、工作表、工作簿,如下图所示1、工作表对象:每个EXCEL文件的每个sheet对应一个工作表对象。如果将sheet1对象中的代码移到sheet2对象中,将不再对sheet1起作用,因此,工作表事件代码窗口用于保存与工作表相关的事件代码2、工作簿对象:每个EXCEL文件有且仅有一个工作簿对象。一切与工作簿事件有关的代码,都必须录入在工作簿对象事件代码中。3、用户自定义窗体:用于设计对话框、制作程序界面,而且适当的通过窗体来录入或修改数据,可以有效避免数据录入的错误率及重复数据的多次录入等情况,提高效率4、标准模块:用于存放子过程(SUB)或自定义函数(FUNCTION)以及通过录制宏产生的代码。(非事件代码均建议写在标准模块中)5、类模块:详见13章笔记6、属性窗口(F4):用于查看或修改各对象的属性7、代码录入区:有多少个对象就有多少个代码窗口,此窗口默认是重叠的,只显示最上面的一个,可通过双击对象切换到相对应的代码窗口;8、对象列表(shift+F7)
2、:9、过程列表第二节:录入代码代码的存放位置:所有工作表事件的代码必须存放在对应的工作表的事件代码窗口中,放在其他地方,代码不会被执行;工作簿事件的代码必须放在ThisWorkbook代码窗口中,类模块相关的代码必须放在类模块中;除此以外的其他代码均放在标准模块中。(即:除事件代码以外,均适宜放在标准模块中)写入代码的方法:如果是通过网络获取的或通过别人帮忙编写的代码,可以直接复制到相应的窗口最简单的方法:录制宏事件代码的录入:通过对象下拉列表框和过程下拉列表框来录入代码。事件以外的代码录入:单击菜单“插入 ”“过程 ”录入过程名称,并根据需要选择类型和范围,单击“确定”按钮,即可生成程序外壳。熟练以后,可以直接手动写代码,不再需要通过此方法。提升代码的可读性:为了更容易的读懂代码且给后续的代码维护工作提供便利,在写代码时尽可能的做到以下五点:一、代码的对齐与缩进:VBA代码是有层级关系的,同级代码应采用相同的左边距(缩进代码与凸出请不要使用空格键,请使用TAB键,也可直接点击工具栏上的代码缩进与凸出按钮)二、长代码换行:当一段代码有一行或多行代码时,为了便于阅读和理解代码的含义。VB
3、A提供了换行的方式:在代码需要换行的地方插入“ _”,然后将后面的代码放在下一行即可,从而可以使一行代码在两行或多行显示。(“ _”包含两个字符,第一个是空格不能少,第二个是下划线)。换行时不能从单词中间截断,否则代码无效。三:有意义的名称:程序过程命名方式一:在命名时完整的说明程序的功能;方式二:简化命名+详细注释。变量或常量的命名:用英文命名如FileName或用汉字词语命名四:代码注释:为了方便随时都能迅速的读懂代码,要养成注释代码的习惯,方式有两种:整段代码的注释写在代码段的上方;单句代码的注释写在代码的右侧。添加注释的方法:半角的撇号“”后跟注释的内容。VBA对很多对象都提供了快速信息,包括对象、属性、方法、函数和参数。其中绿色图标表示方法,黑色带有手形的图标代表属性。若无把握写正确这些方法或属性时,可以直接从列表中选择,从而提高录入的准确性。第三节:代码的执行方式方式一:快捷键调用:ALT+F8打开宏对话框,点击选项按钮:跳出宏选项对话框:这里即可指定当前选择的SUB过程对应的快捷键。也可以通过代码Application.OnKey方法来指定快捷键只需在需要指定快捷键的su
4、b中加上一句:Application.OnKey 指定的快捷键”,“对应的过程名”(小写字母对应CTRL+此字母,大写字母对应CTRL+SHIFT+该字母)方式二:单击按钮执行:插入表单控件按钮,拖动鼠标使按钮大小调整到适当大小跳出指定宏对话框,选择宏名列表中相应的宏,单击确定:特别说明:以上两种方法仅对无参数且未隐藏的SUB过程有效,对自定义函数无效,对有参数的SUB过程及私有过程均无效。方式三:自动执行VBA中有一种通过快捷键或按钮均无法调用执行的代码,即事件过程代码,只有当满足事件所指定的条件时,才会自动执行此类代码。方式四:在公式中调用即FUNCTION过程(自定义函数),此过程可以嵌套到SUB过程中,即通过SUB过程来调用FUNCTION过程。但更多的应用是在单元格中当公式来使用。第四节 保存代码文件保存格式对VBA代码的影响2003版本OFFICE的文件格式xls可以保存代码,2007及以上版本需要保存为xlsm格式才可保留代码,这是为了区分有代码的文件还是无代码的文件。2007及以上版本中,如果将含有代码的文件保存为XLSX格式时,会跳出如下对话框,表示XLSX格式无法保
5、存代码。此时,仅需点击否,重新选择保存类型为XLSM格式即可。单独保存代码模块 代码除了保存在工作簿中,也可单独将代码保存为文件,从而可以备份代码,供在多个程序中调用,避免多次重复录入相同功能的代码。 保存模块代码的方法:在相应的标准模块上点击鼠标右键,选择“导出文件”,然后选择保存路径并确认文件名即可。第五节 让代码畅通无阻方法一:调整宏的安全等级:默认设置为不运行宏文件并弹出安全警告。如果需要运行宏,仅需点击安全提示旁的“启用”即可。(此为建议采用的方式1)方法二:添加受信任位置:单击功能区中的“开发工具”“宏安全性”,单击对话框中的“受信任位置”,点击右侧的“添加新位置”,将需要受信任的文件夹添加到对话框中,同时对“同时信任此位置的子文件夹”打勾即可。(建议采用的方式之2)步骤一步骤二步骤三步骤四方法三:将代码封闭成加载项:因为宏安全性设置仅对工作簿中的VBA代码有效,对DLL格式的加载项无效,因此可以采用此方法让宏自动运行不受设置影响。(建议采用的方式之3 )方法四:将宏设置设置为第四项启用所有宏(强烈不建议采用此方法)第六节 调用代码的帮助系统EXCEL和VBA拥有各自的帮助
6、系统(初学者建议用2010版本来学习VBA,因为这个版本的帮助文档最完善),他们的内容不一致,调用方法也不一致。EXCEL帮助内容包含了除VBA以外的所有EXCEL相关帮助信息,而EXCEL VBA的帮助,需要在VBE(ALT+F11)的界面下按下F1键来打开帮助系统。注意:查询对象或属性、方法时,尽可能将它的前置对象也一同录入,这样查询速度更快,结果更精确。比如:查询SELECT方法时,放在不同的对象后面有不同的语法:因此查询帮助系统时,尽量采用类似以下关键词RANGE.SELECT、WORKSHEET.SELECT,而不是仅仅录入一个SELECT第一章补充 MSGBOXMSGBOX语法:MSGBOX(显示在对话框中的内容,显示的按钮集,在对话框标题栏中显示的内容,识别向对话框提供上下文相关帮助的帮助文件,适当帮助主题的上下文编号)说明:1、第二个参数即可使用常数也可使用值,功能是一样的:例如:msgbox你好啊!,1+64和msgbox你好啊!,vbOkCancel+VbInformation,两者效果是一样的。2、上表中的最后三个值,并不会产生新的图标,而仅是指定默认按钮是第几个
7、。3、由于msgbox有返回值以表示用户点击的是哪个按钮,因此可以通过代码实现,点击不同的按钮产生不同的效果。第二章 从概念认识VBA第一节 认识过程过程的分类:子过程、函数过程和属性过程子过程的标志是以SUB开头,所有录制宏产生的过程都是子过程。子过程的语法:Public/Private/Friend Static Sub 过程名 (参数列表)特别说明:语法中用括起来的部分表示此部分是可选部分,即可以省略的部分,具体什么情况下可以省略需要视不同需求而定(下同)任意代码段EXIT SUB(终止过程)任意代码段End Sub说明:1、Public/Private/Friend是可选的,用于指定过程的作用域(公用/私有)Friend仅可在类模块中使用,默认值是Public。2、Static:用于指定过程是静态还是动态,加上Static则是静态的,省略则为动态的。3、参数列表是可以省略的,所有带参数的过程都不能通过ALT+F8调用,而是作为另一个过程的子过程使用。通常,需要反复执行多次的操作,或多个过程中需要执行某个相同的操作时,就需要创建一个带参数的过程。4、EXIT SUB表示终止过程,
8、可以放在程序中的任意位置,表示符合条件时终止过程过程的命名要求:首字符不能是数字;不能包含标点及空格;不能使用系统保留字;同一模块中不能出现同名过程;长度不能超过255一个过程可以被另一个过程调用,即过程A可以被过程B调用,过程A就是过程B的子过程。需要注意的是:如果声明的过程是私有的(即Private Sub),则该过程只能被当前模块中的其他过程调用。如果定义为Public SUB或直接省略Public,则不受此限制。当调用私有过程时,会报下图所示的错误过程的执行顺序:一个过程中有多句代码时,通常执行顺序是从上到下依次逐句执行。VBA允许将多句代码写在同一行中,中间用冒号分隔即可,此时程序则按从左往右的顺序依次执行。如:sub test()msgboxhello!: msgboxHow are you?end sub也可通过以下几种方法改变代码的执行顺序:方法1:EXIT Sub:用于终止程序,从而使其后面的代码不再执行。例如下面的代码,msgbohow are you不会再执行,即只会跳出提示hellosub test()msgboxhello!exit submsgboxHow
9、are you”end sub方法2:如果中途调用了另一个过程,那么执行完该过程中的所有代码再执行CALL语句后面的代码。方法3、使用GOTO语句改变执行代码的顺序,如下代码,如果当前时间大于10点,提示how are you,否则提示hello:sub test()if hour(now)10 then goto aa msgboxhelloaa:msgboxhow are youend sub方法4、Resume语句也可改变代码的执行顺序,需结合防出错语句 on error goto一起使用,表示返回原来的行格式:sub test()on error goto aa 代码段1exit subaa: 代码段2 resumeend sub说明 :以上程序当代码段1执行出错时跳转到aa标签处往下执行代码段2,执行完代码段2后遇到resume则回到代码段1中出错的那一句继续执行第二节 关于参数参数存在的价值:参数分为两类:过程中的参数:过程中的参数写在过程名后的括号中,它相当于软件的一个自定义选项,如果对过程使用了参数,那么工作表名称和区域地址就可以通过参数从主过程传递到子过程,从而使操作对象不再固定,使 程序更灵活。通常用于传递常量或变量,强化过程的功能。示例代码:Sub Hello(M
《玩转VBA笔记整理-1017》由会员小****分享,可在线阅读,更多相关《玩转VBA笔记整理-1017》请在金锄头文库上搜索。