版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Excel的VBA对象ExcelVBA对象模型&Range对象Excel对象模型VBA通过对象来操作和控制Excel查看完整的ExcelVBA对象模型:在VBE的工具栏单击按钮在帮助窗口的工具栏单击按钮在目录窗格的“Excel2010开发人员”下选择“Excel对象模型参考”主题Excel对象模型在对象模型列表中,以复数形式陈列的表示的是一个集合。集合是指一组相似的对象,例如Workbooks是一个集合,而Worksheets是另一个集合例:Application.Workbooks("Book1").Worksheets("Sheet1").Range("A1")其中,Book1是集合Workbooks的一个元素,Sheet1是集合Worksheets的一个元素,A1是集合Range的一个元素ExcelVBA的常用对象Excel应用程序(Application)工作薄(Workbook)工作表(Worksheet)区域(Range)使用对象变量定义对象变量DimxlsAppAs[Excel.]ApplicationDimxlsWBAs[Excel.]WorkbookDimxlsWSAs[Excel.]WorksheetDimxlsRGAs[Excel.]Range为对象变量赋值SetxlsWB=Workbooks("eg1.xlsx")SetxlsWS=Workbooks(1).Worksheets("Sheet1")SetxlsRG=Workbooks("eg1").Sheets(1).Range("A1:D5")几个特殊对象ThisWorkbook当前宏代码运行的工作簿ActiveWorkbook活动窗口的工作簿ActiveSheet活动工作簿中的活动工作表ActiveCell活动窗口的活动单元格Range对象(P.118)Range对象本身就表示一个集合,可代表某一单元格、某一行、某一列、某一选定区域可用Range(arg)来返回代表单个单元格或单元格区域的Range对象,其中arg为区域名称。例如:
DimvRngAsRange SetvRng=ThisWorkbook.ActiveSheet.Range("A1:A5")Range对象还可以使用Range(Cell1,Cell2)来引用一个单元格或单元格区域,其中Cell1是区域左上角(右下角)单元格地址,Cell2是区域右下角(左上角)单元格地址例如: Range("A1:C5") || Range("A1","C5")Range对象的常用属性Value
表示单元格的内容,不仅可表示单个单元格的值,也可将整个区域作为一个数组返回或者设置例1:
ActiveCell.Value=5例2:
vData=ActiveSheet.Range("A5:E6").Value ActiveSheet.Range("A8:E9").Value=vDataRange对象的常用属性Cells表示单元格区域中的所有单元格可用Cells(row,column)表示单元格区域中的某个单元格,其中row为行号,column为列标例如,下面代码将当前工作表B2:D4区域的第2行第2列的单元格(即C3)的值设为5:
ThisWorkbook.ActiveSheet.Range("B2:D4").Cells(2,2).Value=5Range对象的常用属性Offset
表示相对于指定区域偏移若干行和列以后的区域,使用方法:Offset(row,column),其中row和column分别为行偏移量和列偏移量例:
ActiveCell.Offset(3,3).Value=5实践1在公务员考试成绩表工作簿中,假定学生均已获得相应学位,试编写一个宏,用ForEach…Next循环遍历“学历”列各学生的学历,然后在“学位”列填写其对应的学位。学历学位对应关系如下表所示:学历学位博士研究生博士硕士研究生硕士本科学士其他无Range对象的常用属性CurrentRegion
表示当前区域,当前区域是以空行与空列的组合为边界的区域例如,下面代码选定工作表Sheet1上的当前区域:
Worksheets("Sheet1").Activate ActiveCell.CurrentRegion.SelectRange对象的常用属性Columns
表示指定单元格区域中的所有列可用Columns(index)表示单元格区域中的某列例如,下面代码将B2:D4区域第一列中每一单元格的值置为0:
ThisWorkbook.ActiveSheet.Range("B2:D4").Columns(1).Value=0Range对象的常用属性ColumnWidth表示指定区域中所有列的列宽,例:
WithWorksheets("Sheet1").Range("B3.A12")
.ColumnWidth=.ColumnWidth*2
EndWithRange对象的常用属性Column返回指定区域第一个子区域的第一列的列号例如,下面代码返回myRange区域最后一列的列号:
myRange.Columns(myRange.Columns.Count).ColumnRange对象的常用属性Rows
表示指定单元格区域中的所有行可用Rows(index)表示单元格区域中的某行例如,下面代码将B2:D4区域的第3行删除:
ThisWorkbook.ActiveSheet.Range("B2:D4").Rows(3).DeleteRange对象的常用属性RowHeight表示指定区域中所有行的行高,例:
ActiveSheet.Range("B3.A12").RowHeight=10Range对象的常用属性Row返回区域中第一个子区域的第一行的行号例如,下面代码将工作表sheet1中每隔一行的行高设置为4磅:
ForEachrwInWorksheets("Sheet1").Rows
Ifrw.RowMod2=0Thenrw.RowHeight=4
EndIfNextrwRange对象的常用属性Count
表示指定单元格区域的单元格个数注意:Cells、Columns和Rows集合对象亦有Count属性实践2假设员工薪资表工作簿中的员工总数未知,试编写一个宏,统计其中薪资超过5000的员工人数,并将统计结果用消息框输出Range对象的常用属性Font:表示指定区域的字体格式,其本身也是一个对象,有如下常用的属性:Name:字体名称FontStyle:字形Size:字号Strikethrough:删除线Superscript:上标Subscript:下标OutlineFont:空心字Shadow:阴影Underline:下划线ColorIndex:颜色编号Range对象的常用属性ColorIndexColor描述1vbBlack黑色2vbWhite白色3vbRed红色4vbGreen绿色5vbBlue蓝色6vbYellow黄色7vbMagenta洋红8vbCyan青色Range对象的常用属性Interior
表示指定区域的内部格式,其本身也是一个对象,常用的属性是ColorIndex和Pattern,其中ColorIndex的取值范围如Font对象的ColorIndex值,Pattern表示填充图案实践3假设员工薪资表工作簿中的员工总数未知,试编写一个宏,将薪资最高的员工的所在行设置为字体加粗、红色,背景为绿色填充?实践3之我的解决方案
命名参数传递(P.92)命名参数
在调用Sub或Function过程时,可不必拘泥于语法所规定的特定顺序来提供值,而按自定义顺序用命名参数来分配值。例如,假设一Sub过程设定了三个参数:
SubDoSomeThing(namedarg1,namedarg2,namedarg3)
则在调用它时,可使用以下语句:
DoSomeThingnamedarg3:=4,namedarg2:=5,namedarg1:=20命名参数传递命名参数在调用具有可选的参数过程时显得特别有用。如果使用命名参数,则不必利用逗号去区分出失去位置的参数例如:MsgBox"Hi,VBA.",,"命名参数示例"等价于MsgBox"Hi,VBA.",Title:="命名参数示例"Range对象的常用属性Address返回区域的引用地址,默认时返回的是绝对引用,例如:
Setmc=Worksheets("Sheet1").Cells(1,1) MsgBoxmc.Address
上面语句执行后,消息框中显示“$A$1”Range对象的常用属性End
表示包含源区域的区域尾端的单元格,语法为:End(Direction),其中Direction
有4个取值:xlDown、xlToRight、xlToLeft、xlUp
例如,下面代码将选定区域从单元格B4延伸至第四行最后一个包含数据的单元格
Worksheets("Sheet1").Activate Range("B4",Range("B4").End(xlToRight)).Select实践4利用Range对象的End属性实现实践2的功能?Range对象的常用属性MergeCells判断单元格或区域是否被包含在一个合并区域中,如果是,则该值为TrueMergeArea表示某单元格所在的合并区域。如果该单元格不在合并区域内,则该属性返回该单元格本身例如,下面代码表示为包含单元格A3的合并区域赋值
Setma=Range("a3").MergeArea Ifma.Address="$A$3"Then MsgBox"notmerged" Elsema.Cells(1,1).Value="42" EndIfRange对象的常用属性注意:Cells、Columns及Rows本身也是一个Range型的集合对象,因此,它们也具有Value、Count、Font、Interior等属性Range对象的常用方法Activate激活单个或多个单元格
Worksheets("sheet1").Range("A1").ActivateSelect选中区域
Worksheets("sheet1").Range("A1:B5").SelectAutoFit
将区域中的列宽和行高调整为最适当的值
Worksheets(1).Range("A1:E1").Columns.AutoFitRange对象的常用方法Copy:复制Cut:剪切PasteSpecial:粘贴,允许设置粘贴值还是格式(详见帮助)例如,下面代码表示用Sheet1上单元格区域C1:C5和单元格区域D1:D5原有内容的和来取代单元格区域D1:D5中的数据WithWorksheets("Sheet1").Range("C1:C5").Copy.Range("D1:D5").PasteSpecial_Operation:=xlPasteSpecialOperationAddE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2.1区域发展的自然环境基础课件高中地理人教版选择性必修2
- 2026年医学基础-解剖学题库(得分题)附参考答案详解(培优B卷)
- 2026年心理治疗通关模拟卷带答案详解(轻巧夺冠)
- 2026年混凝土技术人员每日一练试卷带答案详解(轻巧夺冠)
- 2026年公用设备工程师之专业基础知识(暖通空调+动力)试题(得分题)附答案详解(基础题)
- 2026年注册岩土工程师题库检测试题附参考答案详解(培优A卷)
- 【低空经济】低空经济与智慧高速融合发展方案
- 2026年原创课件幼儿园
- 2026年幼儿园微课程交流
- 2026年幼儿园护齿知识
- 2025房屋买卖合同范本(下载)
- 2025年哈尔滨工业大学管理服务岗位招聘考试笔试试题(含答案)
- (2025年标准)山地开路协议书
- 2025年陕西高中学业水平合格性考试化学试卷真题(含答案)
- DB23∕T 3082-2022 黑龙江省城镇道路设计规程
- 江苏棋牌室管理暂行办法
- 聚合工艺作业培训课件
- 酒店安全设施维护规定
- 2024年中国烟草总公司江西省公司考试真题试卷及答案
- 单位见习人员管理制度
- T/GXAS 830-2024经桡动脉穿刺介入诊疗患者术肢管理规范
评论
0/150
提交评论