玩转VBA笔记整理-1017.docx

上传人:小****库 文档编号:2955397 上传时间:2020-06-04 格式:DOCX 页数:31 大小:744.35KB
返回 下载 相关 举报
玩转VBA笔记整理-1017.docx_第1页
第1页 / 共31页
玩转VBA笔记整理-1017.docx_第2页
第2页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《玩转VBA笔记整理-1017.docx》由会员分享,可在线阅读,更多相关《玩转VBA笔记整理-1017.docx(31页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第一节:认识VBE界面默认的VBE界面包含了:菜单栏、工具栏、工程管理器、代码窗口,如下图:其实VBE界面中还包含了模块、类模块、窗体、工作表、工作簿,如下图所示1、工作表对象:每个EXCEL文件的每个sheet对应一个工作表对象。如果将sheet1对象中的代码移到sheet2对象中,将不再对sheet1起作用,因此,工作表事件代码窗口用于保存与工作表相关的事件代码2、工作簿对象:每个EXCEL文件有且仅有一个工作簿对象。一切与工作簿事件有关的代码,都必须录入在工作簿对象事件代码中。3、用户自定义窗体:用于设计对话框、制作程序界面,而且适当的通过窗体来录入或修改数据,可以有效避免数据录入的错误

2、率及重复数据的多次录入等情况,提高效率4、标准模块:用于存放子过程(SUB)或自定义函数(FUNCTION)以及通过录制宏产生的代码。(非事件代码均建议写在标准模块中)5、类模块:详见13章笔记6、属性窗口(F4):用于查看或修改各对象的属性7、代码录入区:有多少个对象就有多少个代码窗口,此窗口默认是重叠的,只显示最上面的一个,可通过双击对象切换到相对应的代码窗口;8、对象列表(shift+F7):9、过程列表第二节:录入代码代码的存放位置:所有工作表事件的代码必须存放在对应的工作表的事件代码窗口中,放在其他地方,代码不会被执行;工作簿事件的代码必须放在ThisWorkbook代码窗口中,类模

3、块相关的代码必须放在类模块中;除此以外的其他代码均放在标准模块中。(即:除事件代码以外,均适宜放在标准模块中)写入代码的方法:如果是通过网络获取的或通过别人帮忙编写的代码,可以直接复制到相应的窗口最简单的方法:录制宏事件代码的录入:通过对象下拉列表框和过程下拉列表框来录入代码。事件以外的代码录入:单击菜单“插入 ”“过程 ”录入过程名称,并根据需要选择类型和范围,单击“确定”按钮,即可生成程序外壳。熟练以后,可以直接手动写代码,不再需要通过此方法。提升代码的可读性:为了更容易的读懂代码且给后续的代码维护工作提供便利,在写代码时尽可能的做到以下五点:一、代码的对齐与缩进:VBA代码是有层级关系的

4、,同级代码应采用相同的左边距(缩进代码与凸出请不要使用空格键,请使用TAB键,也可直接点击工具栏上的代码缩进与凸出按钮)二、长代码换行:当一段代码有一行或多行代码时,为了便于阅读和理解代码的含义。VBA提供了换行的方式:在代码需要换行的地方插入“ _”,然后将后面的代码放在下一行即可,从而可以使一行代码在两行或多行显示。(“ _”包含两个字符,第一个是空格不能少,第二个是下划线)。换行时不能从单词中间截断,否则代码无效。三:有意义的名称:程序过程命名方式一:在命名时完整的说明程序的功能;方式二:简化命名+详细注释。变量或常量的命名:用英文命名如FileName或用汉字词语命名四:代码注释:为了

5、方便随时都能迅速的读懂代码,要养成注释代码的习惯,方式有两种:整段代码的注释写在代码段的上方;单句代码的注释写在代码的右侧。添加注释的方法:半角的撇号“”后跟注释的内容。VBA对很多对象都提供了快速信息,包括对象、属性、方法、函数和参数。其中绿色图标表示方法,黑色带有手形的图标代表属性。若无把握写正确这些方法或属性时,可以直接从列表中选择,从而提高录入的准确性。第三节:代码的执行方式方式一:快捷键调用:ALT+F8打开宏对话框,点击选项按钮:跳出宏选项对话框:这里即可指定当前选择的SUB过程对应的快捷键。也可以通过代码Application.OnKey方法来指定快捷键只需在需要指定快捷键的su

6、b中加上一句:Application.OnKey 指定的快捷键”,“对应的过程名”(小写字母对应CTRL+此字母,大写字母对应CTRL+SHIFT+该字母)方式二:单击按钮执行:插入表单控件按钮,拖动鼠标使按钮大小调整到适当大小跳出指定宏对话框,选择宏名列表中相应的宏,单击确定:特别说明:以上两种方法仅对无参数且未隐藏的SUB过程有效,对自定义函数无效,对有参数的SUB过程及私有过程均无效。方式三:自动执行VBA中有一种通过快捷键或按钮均无法调用执行的代码,即事件过程代码,只有当满足事件所指定的条件时,才会自动执行此类代码。方式四:在公式中调用即FUNCTION过程(自定义函数),此过程可以嵌

7、套到SUB过程中,即通过SUB过程来调用FUNCTION过程。但更多的应用是在单元格中当公式来使用。第四节 保存代码文件保存格式对VBA代码的影响2003版本OFFICE的文件格式xls可以保存代码,2007及以上版本需要保存为xlsm格式才可保留代码,这是为了区分有代码的文件还是无代码的文件。2007及以上版本中,如果将含有代码的文件保存为XLSX格式时,会跳出如下对话框,表示XLSX格式无法保存代码。此时,仅需点击否,重新选择保存类型为XLSM格式即可。单独保存代码模块 代码除了保存在工作簿中,也可单独将代码保存为文件,从而可以备份代码,供在多个程序中调用,避免多次重复录入相同功能的代码。

8、 保存模块代码的方法:在相应的标准模块上点击鼠标右键,选择“导出文件”,然后选择保存路径并确认文件名即可。第五节 让代码畅通无阻方法一:调整宏的安全等级:默认设置为不运行宏文件并弹出安全警告。如果需要运行宏,仅需点击安全提示旁的“启用”即可。(此为建议采用的方式1)方法二:添加受信任位置:单击功能区中的“开发工具”“宏安全性”,单击对话框中的“受信任位置”,点击右侧的“添加新位置”,将需要受信任的文件夹添加到对话框中,同时对“同时信任此位置的子文件夹”打勾即可。(建议采用的方式之2)步骤一步骤二步骤三步骤四方法三:将代码封闭成加载项:因为宏安全性设置仅对工作簿中的VBA代码有效,对DLL格式的

9、加载项无效,因此可以采用此方法让宏自动运行不受设置影响。(建议采用的方式之3 )方法四:将宏设置设置为第四项启用所有宏(强烈不建议采用此方法)第六节 调用代码的帮助系统EXCEL和VBA拥有各自的帮助系统(初学者建议用2010版本来学习VBA,因为这个版本的帮助文档最完善),他们的内容不一致,调用方法也不一致。EXCEL帮助内容包含了除VBA以外的所有EXCEL相关帮助信息,而EXCEL VBA的帮助,需要在VBE(ALT+F11)的界面下按下F1键来打开帮助系统。注意:查询对象或属性、方法时,尽可能将它的前置对象也一同录入,这样查询速度更快,结果更精确。比如:查询SELECT方法时,放在不同

10、的对象后面有不同的语法:因此查询帮助系统时,尽量采用类似以下关键词RANGE.SELECT、WORKSHEET.SELECT,而不是仅仅录入一个SELECT第一章补充 MSGBOXMSGBOX语法:MSGBOX(显示在对话框中的内容,显示的按钮集,在对话框标题栏中显示的内容,识别向对话框提供上下文相关帮助的帮助文件,适当帮助主题的上下文编号)说明:1、第二个参数即可使用常数也可使用值,功能是一样的:例如:msgbox你好啊!,1+64和msgbox你好啊!,vbOkCancel+VbInformation,两者效果是一样的。2、上表中的最后三个值,并不会产生新的图标,而仅是指定默认按钮是第几个

11、。3、由于msgbox有返回值以表示用户点击的是哪个按钮,因此可以通过代码实现,点击不同的按钮产生不同的效果。第二章 从概念认识VBA第一节 认识过程过程的分类:子过程、函数过程和属性过程子过程的标志是以SUB开头,所有录制宏产生的过程都是子过程。子过程的语法:Public/Private/Friend Static Sub 过程名 (参数列表)特别说明:语法中用括起来的部分表示此部分是可选部分,即可以省略的部分,具体什么情况下可以省略需要视不同需求而定(下同)任意代码段EXIT SUB(终止过程)任意代码段End Sub说明:1、Public/Private/Friend是可选的,用于指定过

12、程的作用域(公用/私有)Friend仅可在类模块中使用,默认值是Public。2、Static:用于指定过程是静态还是动态,加上Static则是静态的,省略则为动态的。3、参数列表是可以省略的,所有带参数的过程都不能通过ALT+F8调用,而是作为另一个过程的子过程使用。通常,需要反复执行多次的操作,或多个过程中需要执行某个相同的操作时,就需要创建一个带参数的过程。4、EXIT SUB表示终止过程,可以放在程序中的任意位置,表示符合条件时终止过程过程的命名要求:首字符不能是数字;不能包含标点及空格;不能使用系统保留字;同一模块中不能出现同名过程;长度不能超过255一个过程可以被另一个过程调用,即

13、过程A可以被过程B调用,过程A就是过程B的子过程。需要注意的是:如果声明的过程是私有的(即Private Sub),则该过程只能被当前模块中的其他过程调用。如果定义为Public SUB或直接省略Public,则不受此限制。当调用私有过程时,会报下图所示的错误过程的执行顺序:一个过程中有多句代码时,通常执行顺序是从上到下依次逐句执行。VBA允许将多句代码写在同一行中,中间用冒号分隔即可,此时程序则按从左往右的顺序依次执行。如:sub test()msgboxhello!: msgboxHow are you?end sub也可通过以下几种方法改变代码的执行顺序:方法1:EXIT Sub:用于终

14、止程序,从而使其后面的代码不再执行。例如下面的代码,msgbohow are you不会再执行,即只会跳出提示hellosub test()msgboxhello!exit submsgboxHow 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

15、方法4、Resume语句也可改变代码的执行顺序,需结合防出错语句 on error goto一起使用,表示返回原来的行格式:sub test()on error goto aa 代码段1exit subaa: 代码段2 resumeend sub说明 :以上程序当代码段1执行出错时跳转到aa标签处往下执行代码段2,执行完代码段2后遇到resume则回到代码段1中出错的那一句继续执行第二节 关于参数参数存在的价值:参数分为两类:过程中的参数:过程中的参数写在过程名后的括号中,它相当于软件的一个自定义选项,如果对过程使用了参数,那么工作表名称和区域地址就可以通过参数从主过程传递到子过程,从而使操作

16、对象不再固定,使 程序更灵活。通常用于传递常量或变量,强化过程的功能。示例代码:Sub Hello(MyStr) msgbox MyStrend subSub 问候() If Hour(Now) 12 then Hello上午好 elseif Hour(Now) 13 then Hello中午好 else Hello下午好 end ifend sub说明:以上代码你会发现代码中调用其他过程时,没有用CALL,这是因为在调用子过程时call 是可以省略的,当省略CALL时,外侧的()一同省略。参数的赋值方式:按位置赋值:当被调用的过程或调用EXCEL内部的各种方法时,如果他有多个参数,则需要在代

17、码中对参数按预设的顺序逐一赋值,如果位置错误将无法获得想要的结果,对于可选参数使用逗号占位即可。示例代码:Sub hello(Info, title) MsgBox Info, vbOKOnly, titleEnd SubSub test() hello 你好, 问候 hello 问候, 你好End Sub 第一次执行时 第二次执行时你可以看到,两次调用子过程hello时,两次执行的参数的值互换了一下,结果就会不一样。按名称赋值:按参数的名称赋值时,只需指定正确的参数名称即可,没有顺序要求。格式如下:参数名称:=参数值可选参数和必选参数参数分为可选和必选:前面第一节有提到过程的语法:Publi

18、c/Private/Friend Static Sub 过程名 (参数列表)这里我们就来说说最后一项“参数列表”它的语法如下:OptionalByVal|ByRefParamArray参数名参数类型默认值从语法中可以看到参数列表部分也有好多参数且除参数名以外都是可选参数具体说明见下表其中需要多加注意的有以下几点:1、在参数名称前加上Optional即可设置该参数为可选参数,且设置为可选参数后,需要设置一个默认值,从而使调用过程未指定参数的值时,调用此默认值。2、被Optional限制的参数,右侧不能有必选参数。3、Optional一次只能限制一个参数为可选参数。而ParamArray可以将一个

19、参数转换为多个不确定个数的参数。4、使用ParamArray转换参数时,参数类型必须是变体型数组。代码中的参数代码中的参数通常是指VBA的方法或函数的参数,这些都是由系统预定义的。你们也不用担心忘记参数的先后顺序,因为这个顺序VBA会自动提示您,例如之前提到的MSGBOX获得提示的方法:在录入对象的方法名称后按一个空格,VBA就会在其下方列出参数的名称,其中粗体显示的即是你目前需要录入的参数。第三节 理解对象什么是对象对象即我们能见到的,比如工作簿,工作表,单元格,图形,菜单。,下表是常见的对象及说明说明:除Application对象以外都支持复数形式,从而表示对象的集合。下表是常见的对象合集

20、对象的引用层次EXCEL的对象是有层次结构的,多数对象有一个或多个子对象。最高层的对象是Application,其他对象都是它的子对象或子对象的子对象。对象与子对象的表示方式为“对象名.子对象名”。最高层的对象Application通常是可以省略的,因为最高层对象只有这一个,如果都有同名的子对象,则必须写完整.例如要引用不同工作簿的第2个工作表的A1单元格,就必须加上Workbooks(完整文件名).Worksheets(2).Range(a1),如果未指明工作簿名称,直接调用工作表,那么VBA会认为是调用活动工作簿的工作表。说明:1、Workbooks(“abc.xlsm”)和workboo

21、ks(“工作簿1”)的区别:工作簿名称无后缀表示此工作簿暂未保存2、在VBA中调用活动对象时,包括活动工作簿、活动工作表、活动单元格等,可以忽略其父对象名称,只有操作非活动的对象的子对象时才需要在代码中将父对象与子对象一并写完整。第四节 对象的属性及方法认识属性与方法属性:一些属于对象的、可见或不可见的一些特点:例如大小颜色体积之类的。同时,对象的子对象也属于对象的属性。方法:是指对象可以执行的一个动作,例如工作表的添加、删除、改名。自动调用属性及方法:为了确保录入代码的准确性,VBA为大部分对象都提供了快速信息,快速信息就包含了对象的属性和方法。自动调出对象的属性及方法只需在代码窗口中录入对

22、象名称后加一个小圆点即可(即英文输入法状态下的句号)。而对于少部分未提供快速信息的对象,如对象集合使用参数引用其子对象后,该子对象不提供快速信息。此类未提供快速信息的对象,解决办法如下:(以录入cell(1,2).clear为例)1、录入代码Cells.2、继续录入字母c3、通过键盘上下箭头目标单词clear后,按TAB键4、将光标定位到CELLS后面,输入(1,2),完成录入。说明:通过快速信息录入的优点:提升录入代码的准确度;不需要花大量时间去背诵单词,只需知道首字母即可完成录入。怎样才算完整的VBA语句:对于VBA而言,一句完整的代码,必须包含一个动作,例如赋值、修改属性、打开或关闭对象

23、等等;当对象的方法带有参数时,如果该行代码中除了对象名称、对象的方法及方法的参数外没有别的代码,那么对象方法的参数前不能使用括号:例:错误的代码:Worksheets.Add(Sheets(sheet4) 正确的代码:WorkShees.Add sheets(sheet4)如果该行代码中除了对象名称、对象的方法以及方法的参数以外还有别的代码,那么方法的参数前后必须加上括号:例1: MsgBox Worksheets.add(after:=Worksheets(1),Count:=1).Name例2:Worksheets.Add(after:=Worksheets(1),Count:=1).Na

24、me=总表第五节 对象的事件什么是事件EXCEL VBA的事件就是可以被VBA识别的某些操作,可以在这些操作发生时调用开发者指定的指令,从而完成工作需要。事件的存在价值EXCEL事件的本质是对象在某些内部操作时允许开发者执行自定义的操作。事件对于编程的重要性:以往需要单击菜单、调用快捷键才执行的过程,配合事件使用时,只要满足相应的条件就会自动执行。事件的分类:应用程序级事件、工作簿事件、工作表事件、窗体事件、窗体中的控件事件,每个事件都依附在事件的主体之上。事件过程的名称包括对象和动作:例如Workbook_Open,Workbook是对象,Open即打开动作。事件的参数事件过程中的参数类型是

25、不能更改的,参数名称允许修改,但建议使用默认的参数名称,有利于阅读代码和理解。事件过程中的参数和事件名称一样自动产生,而不必手工录入。事件过程的参数不允许删除且均是必选参数第三章 详解对象及其层次结构第一节 查看所有对象VBA提供了关于对象的足够详尽的帮助,你可以通过以下两种方式调出相应的帮助文档:方法一:对象浏览器F2快捷键在VBE界面下按下F2快捷键,即可打开对象浏览器,界面如下图 打开对象浏览器后,可以在“工程 /库”下拉列表中选择顶层对象名称。那么下方的“类”列表中将出现该对象的子对象,而右侧窗口则是该子对象的属性和方法。对象浏览器右上角的问号按钮,用来调用当前选中对象的帮助信息。此方

26、法可以查看EXCEL、VBA或窗体相关所有对象的名称和含义。方法二:从帮助文件中调用对象信息在EXCEL VBA的帮助中有所有EXCEL对象的信息,包括对象名称、子对象名称、对象的属性和方法等。方法如下:1、在VBE界面按下F1快捷键,选择开发人员参考2、选择“EXCEL 2010开发人员参考”3、选择“EXCEL对象模型参考”4、跳出如下窗口,其中包含了所有EXCEL对象的名称,单击相应对象即可打开与该对象有关的属性与方法详解第二节 对象的层次及引用方式对象的层次:对象的层次结构就像我们平时见到的:省市区村的层次结构是一个意思。在引用对象时需要层级关系逐层引用,从而表示各对象的关系,同时也能

27、确保引用的准确性。VBA中对象的层次结构就像省市区的层次结构是一样的,某些对象的上层对象是固定的,那么在引用时可以省略其上层对象名称(例如最高层对象Application),而某些对象则必须完整地表示对其父对象才能引用成功。对象的引用方式:1、使用对象名称引用对象:每个对象都有一个名称,所以允许通过对象名称来引用对象。例如,VBA中表示工作簿时使用Workbooks(工作簿名称),其中不带后缀的表示未保存过的工作簿。如果要引用插入到工作表中的图片,可以使用Shapes(图片名称),当插入图形对象到EXCEL中时,EXCEL会根据插入顺序对图形对应编号,图形的类型加编号就组成了图形对象的完整名称

28、。选中图片,即可在名称栏中看到对应的图形名称。2、使用复数形式表示对象集合:需要特别说明的是当对象集合使用了参数后只能引用该参数所指定的单个对象。如Workboos(123.xlsx),表示引用名称为123的工作簿,而单独的workbooks则表示当前打开的所有工作簿。常见的对象集合除了上一章第三节内容所提到的以外还有:Names,表示名称的集合;Colors,表示颜色的集合;FormatConditions,表示条件格式的集合;PivotTables,表示数据透视表的集合。3、使用序号参数引用对象集合中的子对象:对于复数形式的对象集合,可以使用数字序号来表示引用其中的一个子对象,例如:Wor

29、ksheets(2):引用第二个工作表;Cells(3):表示引用第3个单元格,当CELLS对象引用使用单独一个参数时,表示单元格区域中先行后列的位置序号所对应的单元格;Cells(4,5):当CELLS对象集合使用两个参数时,第一个参数表示行号,第二个参数表示列号;注意:当对象集合的参数是文本时,表示引用的是该名称的对象;若是数字,则表示引用对象集合的第几个子对象4、引用子对象:对象与子对象的表示方式为“对象.子对象”。例如:Workbooks(123.xlsm).worksheets(01)表示引用工作簿123下的名称为01的工作表。在引用子对象时,需要注意他们的层级关系,例如图形对象是工

30、作表的子对象,工作表是工作簿的子对象,所以不能将图形对象作为工作簿的子对象来引用。5、引用活动对象:VBA中通常使用Active表示活动对象,例如:ActiveWorkbook:活动工作簿;ActiveSheet:活动工作表;ActiveWindow:活动窗口;ActiveCell:活动单元格;ActiveChart:活动图表,但是没有活动图形或活动透视表的说法。而且活动对象永远只有一个,因此活动对象没有复数形式而且活动对象没有参数。当引用活动对象的子对象时,可以省略活动对象直接引用子对象。即ActiveWorkbook.worksheets(123)可以简写为worksheets(123),

31、功能都是调用活动工作簿中名称为123的工作表;ActiveSheet.Range(a:a)可以简写为Range(a:a),功能均是调用活动工作表中的A列6、引用父对象:父对象即一个对象的上一层对象。VBA中用同一个词Parent表示父对象。因为一个对象的子对象可能有多个,而它的上一层对象,永远只有一个,例如:单元格的父对象是工作表,那么Range(a1).Parent.Name,则表示获取A1单元格所在工作表的名称;Range(a1).Comment.Parent,获得A1单元格批注的父对象,即A1单元格本身;Range(a1).Parent.Parent.Name,获取A1单元格的父对象的父

32、对象的名称,A1单元格的父对象是工作表,工作表的父对象是工作簿,此代码即获得A1单元格所对应的工作簿的名称。7、利用With语句引用重复出现的对象:当一段代码中重复出现同一个对象时,可以利用With语句只写一次对象名称即可,从而简化代码,提升代码执行效率。例:Sub test() Range(a1).Font.Name=华文中宋 Range(a1).Font.Size=12 Range(a1).Font.Color=255end sub上面这段代码比较直观,但是同一个对象要写多次,可以通过使用With语句简化,代码如下:sub test() With Range(a1).Font .Name=

33、华文中宋 .Size=12 .Color=255 End Withend sub第三节 Range对象Range对象即单元格对象,是EXCEL中应用最频繁的对象。这个对象有以下几种引用方式:1、Range(A1)引用方式:引用单元格:RANGE引用单元格时,代表单元格地址的文本需要采用列标加行村的形式来呈现地址,而且需要使用半角的双引号。例如:RANGE(“A1”);RANGE(“B”&I+5);引用行与列:RANGE引用整行或整整齐齐列与工作表函数引用整行或整列时采用的规则一致。例如:Range(“B:B”):表示引用B列;RANGE(“B:Z”)表示引用B至Z列;Range(“3:20”)

34、:表示引用第3至第20行;整行或整列的引用,通常使用行的集合Rows或列的集合Columns,例如:Rows(“2:2”)=Rows(2):均表示引用第2行,前一个必须使用引号,后一种即为序号引用方式。Columns(b:b)=Columns(2):均表示引用第2列引用区域:使用RANGE引用一个区域包含两种方式:一、采用单元格与冒号形成区域,具体样式如下:Range(”左上角单元格地址:右下角单元格地址”)Range(“左下角单元格地址:右上角单元格地址”)二、采用两个单元格或区域做参数形成的区域:新的区域是包含两个参数的最小矩形区域,它以参数中所有单元格对象的最小行号和最大行号作为上下边界

35、,以参数中最有单元格对象的最小列号和最大列号作为左右边界。例如:Range(Range(“D3”),Range(“I5”),效果等同于RANGE(“D3:I5”)Range(Range(“C3:C4”),Range(“H2:J2”),效果等同于RANGE(“C2:J4”)引用多区域:使用RANGE引用多区域时,区域与区域之间采用逗号分开,然后在前后分别使用半角双引号,RANGE的参数长度不超过256个字符。Range(“C4:C11,E4:E11”)表示同时引用C4:C11和E4:E11两个区域;Range(“6:6,C:C”)表示同时引用第6行和第C列,此形式引用允许多区域重叠。Range(

36、“B3:H5”).Cells(2,2)表示引用B3:H5第2行第2列的值2、Cells(1,1)引用方式:CELLS表示工作表中所有单元格的集合,而使用行坐标和列坐标可以访问集合中任意一个子对象,其中行坐标必须是数值,列坐标可用数值也可用列标字母。当指定工作表名称时,CELLS能引用指定工作表的单元格,当忽略工作表名称时表示引用活动工作表的单元格。当指定工作表名称时,CELLS能引用指定工作表的单元格,当忽略工作表名称时表示引用活动工作表的单元格。Cells(1,1):表示引用工作表中第一行第一列的单元格,即A1;Cells(100,10*5):表示引用第一百行、10*5的单元格,两个参数都可

37、以使用表达式;Cells(5,”R”):表示引用第5行第R列,即R5单元格。WorkSheets(“表1”).Cells(500,”BC”):表示引用表1中的BC500单元格CELLS还有一种较特殊的用法:作为另一个RANGE对象的子对象:当CELLS的父对象是区域时,CELLS代表区域中的所有单元格,而非工作表中的所有单元格。3、A1引用方式:a1引用方式和Range(“a1”)引用方式有异曲同工之妙,都能将文本形式的单元格地址转换成引用,不过他们的差异也不少。相同点表现在两者都能将单元格地址转换成引用,且支持多区域。例如:A1形式的引用:a1:a100、b5、f:f、f:f,g10、A:h

38、,2:4RANGE形式的引用:Range(“a1:a100”)、Range(“b5”)、Range(“F:F,G10”)、Range(A:h,2:4”)以上两种表达方式能产生相同引用,但两者的差异也很明显: 首先,RANGE的参数需要采用引号,而A1则不需要引号,可以直接将文本转换成引用。如果a1形式的引用采用了引号,那么它不再是对象,而是字符串,不再具有Range对象的属性。 其次,录入RANGE(“A1”)形式的对象引用时有快速提示信息,而A1形式则没有,所以在编写编码时尽量采用Range“a1”形式。 最后,a1形式的引用不支持参数,例如:Range(“a1:b10”)(5)表示引用A3

39、单元格,而A1:B10(5)无法引用成功,将出现“错误的参数号”提示。4、活动单元格:ACTIVECELL 在VBA中采用ActiveCell表示活动单元格。活动单元格ActiveCell和选区Selection有不同的含义。Selection表示当前选择的区域,当选择的区域只有单个单元格时,选区Selection就是活动单元格,否则活动单元格仅是处于选区中的一个单元格而已。如果要改变活动单元格,可使用Select方法或者Activate方法。前者表示选择单元格,当选区变化时,活动单元格也会变化,不过最可靠的还是激活方法Activate。例如要将5单元格设置为活动单元格,那么可用以下代码:Ra

40、nge(“F5”).Activate。Range.Select和Range.Activate都不能跨表,仅作用于活动工作表。当活动工作表是第一个工作表时,以下代码将执行失败:Worksheets(2).Range(a5”).Activate。应该先激活第二个工作表,然后再激活单元格:Worksheets(2).Select;Range(“a5”).Activate5、下一个单元格:NEXT Range.Next表示下一个单元格,准确地说是下一个可以输入数据的单元格。在一般情况下,Range.Next表示指定单元格右边的一个单元格,而获取右边的一个单元格的方法有很多,Next属性在此毫无优势,真

41、正体现其价值的是当工作表中存在保护单元格时,采用Range.Next属性可以快捷的获取下一个可供录入数据的目标单元格。6、屏幕坐标下的单元格:RANGEFROMPOINTRangeFromPoint是窗口对象Windows的一个方法,它可以获取位于屏幕上指定坐标位置的Shape或Range对象。如果指定坐标位置上没有任何形状,则此方法将返回Nothing;如果在指定坐标的单元格上方有Shape对象,则此方法返回一个Shape对象;如果指定坐标处只有单元格则返回Range对象。此方法的具体语法如下:WINDOWS.RANGEFROMPOINT(X,Y)。其中参数表示屏幕的纵坐标,表示屏幕的横坐标

42、,单位皆为像素,坐标原点是屏幕左上角。7、选区:SELECTION、RANGESELECTION Selection表示当前选中的对象,可能是单元格也可能是图形对象,还可能是图表。即当前选中的对象是什么Selection就代表什么。 RangeSelection表示指定窗口中工作表上的选定单元格,换言之Selection代表当前选定的对象,而RangeSelection只代表选定对象中的单元格,如果当前选中的活动对象是图片或图表,那么RangeSelection代表上一次选择的单元格对象。如果当前选择的对象是单元格或区域,那么Selection和RangeSelection将表示相同对象。在实

43、际工作中,如果要引用当前选择的区域,则尽量使用RANGESELECTION而不是SELECTION,只有确定选择对象是单元格以外的对象时才用SELECTION。如果需要确定当前活动的对象是否为单元格,可以使用TypeName函数来判断。TypeName函数的功能是判断其参数的类型,计算结果要区分大小写,所以”Range”的首字母必须大写。当TypeName(Selection)计算的结果为”Range”时,表示当前活动对象是单元格。8、已用区域:USEDRANGEUsedRange是Worksheet对象的一个属性,也是Worksheet的子对象,它表示工作表的已用区域,即工作表中包括所有已经

44、使用过的单元格的最小矩形区域。可以看一下下面的例子:在一个工作簿的sheet1表中随意录入些数据,然后测试代码如下:Sub test()Sheets(1).Activate 激活第一个工作表MsgBox ActiveSheet.UsedRange.Address 弹窗显示当前工作表的已用区域的地址End Sub结果如下:特别说明:任何时候UsedRange的父对象都不能省略9、当前区域:CURRENTREGIONCurrentRegion表示单元格的当前区域,当前区域是指以包含当前单元格且以空行与空列的组合为边界的区域。如果工作表中所有非空单元格之间没有整行或整列的间隔,那么工作表的UsedR

45、ange将等同于该区域中任意单元格的CurrentRegion。10、当前数组区域:CURRENTARRAYCurrentArray是Range对象的一个属性,也是Range的子对象,它表示单元格的当前数组区域。数组区域是数组公式所在的区域,可能是单个单元格,也可能是多个单元格。如果单元格中没有数组公式,那么将引用出错。当单元格处于数组区域中时,不允许修改该区域中的单个单元格,只能同时修改整个数组区域中的值。工作中有可能要求在一个区域逐个修改数值,而区域中存在数组区域时必将写入失败。数组区域不能修改其中某个单元格,只能同时对整个区域修改。11、按条件引用区域:SpecialCellsVBA中的Range.SpecialCells方法可以实现随意指定定位条件,从而选择对应的单元格对象(即CTRL+G的功能)。通过Range.SpecialCells方法的参数决定定位对象的类型,其语法如下:RANGE.SPECIALCELLS(TYPE, VALUE)其中第一参数 type表示定位条件,下表中包含了可用于条件的常量名称及含义:常量含义xlCellTypeAllFormatConditions任意格式单元格xlCellTypeAllValidation含有验证条件

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com