




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Excel编程与VBA第九讲Range对象Excel编程与VBA第九讲1Content在VBA代码中,用得最多的单独的对象可能就要算Range对象了。Range对象是Excel的对象世界中真正的工作对象。作为Excel用户,将把大部分时间花在对Range对象的处理上。在本次课程中,将学习多种对Range对象进行处理的技术,重点包括:理解Range对象的作用使用With语句使用ForEach语句分析几个使用Range对象的过程Content在VBA代码中,用得最多的单独的对象可能Range对象是什么?作为Excel用户,基本上是和工作表上的单元格打交道。而在VBA中,则称为和Range对象打交道。对于一个程序员来说,在所有的Excel对象中,对Range对象的处理是最频繁的。正因为如此,在本课程中,将学习有关Range对象的各种知识。一个Range对象可以是:一个单独的单元格。对单元格的选择。多个选择。一行或者一列。一个3D区域。Range对象是什么?作为Excel用户,基本上是和一、Range对象的属性和学习其他对象一样,首先需要学习Range对象的一些属性和方法。Range对象最有用的一些属性如下:Address属性返回Range的当前位置。Count属性用于决定Range中单元格的数目。Formula属性返回用于计算显示值的公式。
Offset属性对于从一个Range移动到另一个Range非常有用。?含义,下面有Resize通过它可设置当前选中的Range的大小。Value返回Range的数值。在上面的清单中列出的属性只是Range对象属性很小的一部分,实际上,Range对象的属性多达几十个。在下面的例题中,将熟悉Range对象的一些属性。在开始前,关闭所有的工作簿,并打开一个新的工作簿。接着从创建一个新的工作表开始:一、Range对象的属性和学习其他对象一样,首先需要一、Range对象的属性(Cont)1)在单元格B1中输入“100”,在单元格B2中输入“200”,在单元格B3中输入“300”。2)选中单元格B4,并输入“=SUM(B1:B3)”。3)按下Alt+F11键打开VisualBasic编辑器,在当前工作簿中插入一个新的模块。4)创建一个名为“RangeProperties”的过程。5)为该过程输入如下代码:ThisWorkbook.Worksheets("Sheet1").Range("A1").Activate
ActiveCell.Offset(2,2).ActivateMsgBox"Thecurrentactivecellis"&ActiveCell.AddressMsgBox"ThevalueofB4is"&Range("B4").ValueMsgBox"TheformulaofB4is"&Range("B4").Formula6)回到工作簿的Sheet1,运行RangeProperties过程。显示的第一个消息框告诉你激活的单元格为C3。7)单击“确定”按钮,下一个消息框显示单元格B4的数值。一、Range对象的属性(Cont)1)在单元格B1一、Range对象的属性(Cont)8)单击“确定”按钮,最后一个消息框显示单元格B4的计算公式。9)单击“确定”按钮,退出消息框。熟悉上面例子中显示信息的细微区别了吗?为了确保对本例中代码的理解,请花一点时间复习一下。1:SubRangeProperties()2:ThisWorkbook.Worksheets("Sheet1").Range("A1").Activate3:ActiveCell.Offset(2,2).Activate4:MsgBox"Thecurrentactivecellis"&ActiveCell.Address5:6:MsgBox"ThevalueofB4is"&Range("B4").Value7:MsgBox"TheformulaofB4is"&Range("B4").Formula8:EndSub在本过程中,做的第一件事是激活单元格A1:ThisWorkbook.Worksheets("Sheet1").Range("A1").Activate一、Range对象的属性(Cont)8)单击“确定”按钮,一、Range对象的属性(Cont)激活单元格A1之后,用Offset方法移动到单元格C3,并且在消息框中显示新激活的单元格的地址:ActiveCell.Offset(2,2).ActivateMsgBox"Thecurrentactivecellis"&ActiveCell.Address通过Offset属性,可以移动到另一个Range位置,这个属性的语法如下:
Rangename.Offset(RowOffset,ColumnOffset)可选参数RowOffset和ColumnOffset控制移动的方向。在本过程中,将这两个参数均设置为2,这就将Range移动到了C3。接下来是显示单元格B4的数值和计算公式:MsgBox"ThevalueofB4is"&Range("B4").ValueMsgBox"TheformulaofB4is"&Range("B4").Formula这两行代码很好地说明了Range对象的Value属性和Formula属性的区别。Value属性返回显示在单元格中的数值,而Formula属性则返回单元格中实际输入的公式。一、Range对象的属性(Cont)激活单元格A1之二、Range对象的方法Range对象同样具有多种多样的方法,包括:Activate激活一个Range。Clear清除一个Range的内容。Copy将一个Range的内容复制到剪贴板。Cut将一个Range的内容剪切到剪贴板。PasteSpecial将剪贴板的内容粘贴到Range中。Select选择一个Range。二、Range对象的方法Range对象同样具有多种多样的方法粘贴方法Range("F3").PasteSpecialActiveSheet.Paste他们的不同?粘贴方法三、使用With语句现在,你对Excel中最常用的对象已经比较熟悉了。接下来,将学习一个结构,通过这个结构可以使对对象的处理更为容易。当对Range对象进行处理时,一个最普通的任务是设置各种各样的属性。下面程序显示了用于对Range对象执行各种格式设置的代码的例子。1:Range("A1:A6").NumberFormat="#,##0.00"2:Range("A1:A6").Font.Name="CourierNew"3:Range("A1:A6").Font.FontStyle="Regular"4:Range("A1:A6").Font.Size=115:Range("A1:A6").Font.Strikethrough=False6:Range("A1:A6").Font.Superscript=False7:Range("A1:A6").Font.Subscript=False8:Range("A1:A6").Font.OutlineFont=False9:Range("A1:A6").Font.Shadow=False10:Range("A1:A6").Font.Underline=xlUnderlineStyleNone11:Range("A1:A6").Font.ColorIndex=xlAutomatic如果需要输入上述代码,就会对重复地输入Range(“A1:A6”)感到厌烦。可以用对象变量来引用Range("A1:A6"),但是仍然需要重复地输入对象变量的名字。三、使用With语句现在,你对Excel中最常用的三、使用With语句(Cont)VBA提供了一种避免这样的方式—With语句。With语句用于设置同一对象的多个属性,或者执行同一对象的多个方法。下面程序显示了使用With语句完成同样功能的代码。1:WithRange("A1:A6")2:.NumberFormat="#,##0.00"3:With.Font4:.Name="CourierNew"5:.FontStyle="Regular"6:.Size=117:.Strikethrough=False8:.Superscript=False9:.Subscript=False10:.OutlineFont=False11:.Shadow=False12:.Underline=xlUnderlineStyleNone13:.ColorIndex=xlAutomatic14:EndWith15:EndWith三、使用With语句(Cont)VBA提供了一种避免三、使用With语句(Cont)虽然程序清单中的With语句并没有减少代码的行数,但是减少了输入量。With语句的语法如下:Withobject[statements]EndWith语法中的object是statements部分中的属性和方法的操作对象。从上述代码中可以看出,statements中的每一行都以符号“.”开始。同样需要注意的是,可以将With语句嵌套使用。针对Font对象的With语句嵌套在针对Range对象的With语句中。下面程序代码举例说明了如何在同一个With语句中使用属性和方法。1:SubWith_Worksheet()2:WithThisWorkbook3:.SaveAs"WithExample"4:MsgBox"SaveStatus:"&.Saved5:EndWith6:EndSub三、使用With语句(Cont)虽然程序清单中的W四、使用ForEach语句With语句是用来执行同一个对象的多个语句,而ForEach语句则是用来对多个对象执行同一条语句。通过ForEach语句,可以对集合中的每个元素重复执行同样的语句。ForEach语句也可用于数组。ForEach语句的语法如下:
ForEachelementIngroup[Statements][ExitFor][Statements]Next注意,该语法支持ExitFor从句。和其他Exit从句一样,ExitFor从句通常位于一条If语句中。如果需要改变Range中每个单元格的数值,可以使用以下的代码。四、使用ForEach语句With语句是用来执行同四、使用ForEach语句(Cont)1:SubForExample()2:DimxAsRange3:4:ForEachxInThisWorkbook.Worksheets("Sheet1").Range("A1:A6")5:x.Value=x.Value+106:Next7:EndSub四、使用ForEach语句(Cont)1:SubFor五、Range对象编程示例(一)在本部分中,将看到多个使用Range对象的代码示例。这些代码示例是程序员最常用的。本例是改变一个Range中每行的格式设置。对于一张很长的工作表,为了使它易于查看和打印,常常需要这样做。注意第一行是标题。需要将从第三行开始的内容隔行加粗。程序如下。1:SubBoldEveryOther()2:DimiCounterAsInteger3:ForiCounter=3ToThisWorkbook.Worksheets("Sheet1")._Range("A1:C25").Rows.CountStep24:ThisWorkbook.Worksheets("Sheet1").Range("A1:C25")._Rows(iCounter).Font.Bold=True5:Next6:EndSub本过程中主要的关键在于ForNext语句。注意iCounter设置的初始值为3,即从第三行开始隔行加粗。Step的值为2决定了是隔行加粗。如果知道需要处理的Range对象的地址,那么本例中的代码非常适用。五、Range对象编程示例(一)在本部分中,将看到多五、Range对象编程示例(二)但是如果不知道Range对象的大小时,又应该怎么办呢?有关这方面的一个经典的例子是,当从其他应用程序(例如数据库)向工作表中导入数据时的情况,也许并不知道会返回多少行数据。下面代码显示了选中一个不知道大小的Range的例子。1:SubSelectRange()2:ThisWorkbook.Worksheets("Sheet1").Range("A1").Activate3:ActiveCell.CurrentRegion.Select4:MsgBox"Theaddressoftheselectedrange"&Selection.Address5:EndSubSelectRange的关键之处在于CurrentRegion属性的使用,本属性返回第一个空行和空列所包围的区域。通过选中CurrentRegion,用不着知道Range的大小。 currentregion选出的是连续的区域,不连续则仅一部分五、Range对象编程示例(二)但是如果不知道Ran五、Range对象编程示例(三)最后一个过程将执行复制/粘贴操作。在下面的代码中,对选中的区域进行复制,并且将复制的内容粘贴到工作表的另一位置。1:SubCopyAndPaste()2:Selection.Copy3:Range("F3").Select4:ActiveSheet.Paste5:Application.CutCopyMode=False6:EndSub语句Selection.Copy将选中的区域放到剪贴板上。下一步是移动到粘贴所复制的内容的理想位置。接着用Paste方法将所复制的区域从剪贴板复制到新的位置上。最后,将Application对象的CutCopyMode属性设置为False。如果不这样做,源文本周围的选取框(移动的虚线)将一直保持,并且状态栏上将一直显示移动目标的指令。五、Range对象编程示例(三)最后一个过程将执行六、问题解答问题:为什么没有Range集合?解答:集合的一个必要条件是可以添加元素。工作表上的单元格(也就是Range)的数目是由Microsoft预先定义的,没有办法向工作表添加更多的单元格,正因为如此,没有Range集合。问题:For语句和ForEach语句有什么不同?解答:首先,讨论一下这两条语句的共同点:它们都是多次执行相同的语句。而问题在于,它们有什么不同?对于For语句而言,语句执行的次数是由一个起始数字和一个结束数字所控制,而ForEach语句中语句执行的次数是由所操作的对象的数目或者数组的元素的数目所控制。六、问题解答问题:为什么没有Range集合?Excel编程与VBA第九讲Range对象Excel编程与VBA第九讲19Content在VBA代码中,用得最多的单独的对象可能就要算Range对象了。Range对象是Excel的对象世界中真正的工作对象。作为Excel用户,将把大部分时间花在对Range对象的处理上。在本次课程中,将学习多种对Range对象进行处理的技术,重点包括:理解Range对象的作用使用With语句使用ForEach语句分析几个使用Range对象的过程Content在VBA代码中,用得最多的单独的对象可能Range对象是什么?作为Excel用户,基本上是和工作表上的单元格打交道。而在VBA中,则称为和Range对象打交道。对于一个程序员来说,在所有的Excel对象中,对Range对象的处理是最频繁的。正因为如此,在本课程中,将学习有关Range对象的各种知识。一个Range对象可以是:一个单独的单元格。对单元格的选择。多个选择。一行或者一列。一个3D区域。Range对象是什么?作为Excel用户,基本上是和一、Range对象的属性和学习其他对象一样,首先需要学习Range对象的一些属性和方法。Range对象最有用的一些属性如下:Address属性返回Range的当前位置。Count属性用于决定Range中单元格的数目。Formula属性返回用于计算显示值的公式。
Offset属性对于从一个Range移动到另一个Range非常有用。?含义,下面有Resize通过它可设置当前选中的Range的大小。Value返回Range的数值。在上面的清单中列出的属性只是Range对象属性很小的一部分,实际上,Range对象的属性多达几十个。在下面的例题中,将熟悉Range对象的一些属性。在开始前,关闭所有的工作簿,并打开一个新的工作簿。接着从创建一个新的工作表开始:一、Range对象的属性和学习其他对象一样,首先需要一、Range对象的属性(Cont)1)在单元格B1中输入“100”,在单元格B2中输入“200”,在单元格B3中输入“300”。2)选中单元格B4,并输入“=SUM(B1:B3)”。3)按下Alt+F11键打开VisualBasic编辑器,在当前工作簿中插入一个新的模块。4)创建一个名为“RangeProperties”的过程。5)为该过程输入如下代码:ThisWorkbook.Worksheets("Sheet1").Range("A1").Activate
ActiveCell.Offset(2,2).ActivateMsgBox"Thecurrentactivecellis"&ActiveCell.AddressMsgBox"ThevalueofB4is"&Range("B4").ValueMsgBox"TheformulaofB4is"&Range("B4").Formula6)回到工作簿的Sheet1,运行RangeProperties过程。显示的第一个消息框告诉你激活的单元格为C3。7)单击“确定”按钮,下一个消息框显示单元格B4的数值。一、Range对象的属性(Cont)1)在单元格B1一、Range对象的属性(Cont)8)单击“确定”按钮,最后一个消息框显示单元格B4的计算公式。9)单击“确定”按钮,退出消息框。熟悉上面例子中显示信息的细微区别了吗?为了确保对本例中代码的理解,请花一点时间复习一下。1:SubRangeProperties()2:ThisWorkbook.Worksheets("Sheet1").Range("A1").Activate3:ActiveCell.Offset(2,2).Activate4:MsgBox"Thecurrentactivecellis"&ActiveCell.Address5:6:MsgBox"ThevalueofB4is"&Range("B4").Value7:MsgBox"TheformulaofB4is"&Range("B4").Formula8:EndSub在本过程中,做的第一件事是激活单元格A1:ThisWorkbook.Worksheets("Sheet1").Range("A1").Activate一、Range对象的属性(Cont)8)单击“确定”按钮,一、Range对象的属性(Cont)激活单元格A1之后,用Offset方法移动到单元格C3,并且在消息框中显示新激活的单元格的地址:ActiveCell.Offset(2,2).ActivateMsgBox"Thecurrentactivecellis"&ActiveCell.Address通过Offset属性,可以移动到另一个Range位置,这个属性的语法如下:
Rangename.Offset(RowOffset,ColumnOffset)可选参数RowOffset和ColumnOffset控制移动的方向。在本过程中,将这两个参数均设置为2,这就将Range移动到了C3。接下来是显示单元格B4的数值和计算公式:MsgBox"ThevalueofB4is"&Range("B4").ValueMsgBox"TheformulaofB4is"&Range("B4").Formula这两行代码很好地说明了Range对象的Value属性和Formula属性的区别。Value属性返回显示在单元格中的数值,而Formula属性则返回单元格中实际输入的公式。一、Range对象的属性(Cont)激活单元格A1之二、Range对象的方法Range对象同样具有多种多样的方法,包括:Activate激活一个Range。Clear清除一个Range的内容。Copy将一个Range的内容复制到剪贴板。Cut将一个Range的内容剪切到剪贴板。PasteSpecial将剪贴板的内容粘贴到Range中。Select选择一个Range。二、Range对象的方法Range对象同样具有多种多样的方法粘贴方法Range("F3").PasteSpecialActiveSheet.Paste他们的不同?粘贴方法三、使用With语句现在,你对Excel中最常用的对象已经比较熟悉了。接下来,将学习一个结构,通过这个结构可以使对对象的处理更为容易。当对Range对象进行处理时,一个最普通的任务是设置各种各样的属性。下面程序显示了用于对Range对象执行各种格式设置的代码的例子。1:Range("A1:A6").NumberFormat="#,##0.00"2:Range("A1:A6").Font.Name="CourierNew"3:Range("A1:A6").Font.FontStyle="Regular"4:Range("A1:A6").Font.Size=115:Range("A1:A6").Font.Strikethrough=False6:Range("A1:A6").Font.Superscript=False7:Range("A1:A6").Font.Subscript=False8:Range("A1:A6").Font.OutlineFont=False9:Range("A1:A6").Font.Shadow=False10:Range("A1:A6").Font.Underline=xlUnderlineStyleNone11:Range("A1:A6").Font.ColorIndex=xlAutomatic如果需要输入上述代码,就会对重复地输入Range(“A1:A6”)感到厌烦。可以用对象变量来引用Range("A1:A6"),但是仍然需要重复地输入对象变量的名字。三、使用With语句现在,你对Excel中最常用的三、使用With语句(Cont)VBA提供了一种避免这样的方式—With语句。With语句用于设置同一对象的多个属性,或者执行同一对象的多个方法。下面程序显示了使用With语句完成同样功能的代码。1:WithRange("A1:A6")2:.NumberFormat="#,##0.00"3:With.Font4:.Name="CourierNew"5:.FontStyle="Regular"6:.Size=117:.Strikethrough=False8:.Superscript=False9:.Subscript=False10:.OutlineFont=False11:.Shadow=False12:.Underline=xlUnderlineStyleNone13:.ColorIndex=xlAutomatic14:EndWith15:EndWith三、使用With语句(Cont)VBA提供了一种避免三、使用With语句(Cont)虽然程序清单中的With语句并没有减少代码的行数,但是减少了输入量。With语句的语法如下:Withobject[statements]EndWith语法中的object是statements部分中的属性和方法的操作对象。从上述代码中可以看出,statements中的每一行都以符号“.”开始。同样需要注意的是,可以将With语句嵌套使用。针对Font对象的With语句嵌套在针对Range对象的With语句中。下面程序代码举例说明了如何在同一个With语句中使用属性和方法。1:SubWith_Worksheet()2:WithThisWorkbook3:.SaveAs"WithExample"4:MsgBox"SaveStatus:"&.Saved5:EndWith6:EndSub三、使用With语句(Cont)虽然程序清单中的W四、使用ForEach语句With语句是用来执行同一个对象的多个语句,而ForEach语句则是用来对多个对象执行同一条语句。通过ForEach语句,可以对集合中的每个元素重复执行同样的语句。ForEach语句也可用于数组。ForEach语句的语法如下:
ForEachelementIngroup[Statements][ExitFor][Statements]Next注意,该语法支持ExitFor从句。和其他Exit从句一样,ExitFor从句通常位于一条If语句中。如果需要改变Range中每个单元格的数值,可以使用以下的代码。四、使用ForEach语句With语句是用来执行同四、使用ForEach语句(Cont)1:SubForExample()2:DimxAsRange3:4:ForEachxInThisWorkbook.Worksheets("Sheet1").Range("A1:A6")5:x.Value=x.Value+106:Next7:EndSub四、使用ForEach语句(Cont)1:SubFor五、Range对象编程示例(一)在本部分中,将看到多个使用Range对象的代码示例。这些代码示例是程序员最常用的。本例是改变一个Range中每行的格式设置。对于一张很长的工作表,为了使它易于查看和打印,常常需要这样做。注意第一行是标题。需要将从第三行开始的内容隔行加粗。程序如下。1:SubBoldEveryOther()2:DimiCounterAsInteger3:ForiCounter=3ToThisWorkbook.Worksheets("Sheet1")._Range("A1:C25").Rows.CountStep24:ThisWorkbook.Worksheets("Sheet1").Range("A1:C25")._Rows(iCounter).Font.Bold=True5:Next6:E
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络架构的性能优化策略试题及答案
- 概念理解2025年信息系统项目管理师试题及答案
- 深化对西方政治制度的理解与思考试题及答案
- 软件设计师考试创新思考试题及答案
- 机电工程项目管理技术试题及答案
- 西方国家政治辩论的功能试题及答案
- 法律与社会公正的互动关系试题及答案
- 非政府组织在政治中的角色试题及答案
- 2025年贵州黔西南州水务局公益性岗位招聘笔试试卷
- 安全漏洞挖掘技巧试题及答案
- GB/T 14600-2025电子气体一氧化二氮
- 网络管理员考试实操训练试题及答案
- 婚庆合作入股协议书
- 2025年药剂师资格考试模拟试题及答案
- 2025年陕西省西安市西咸新区中考二模语文试题(原卷版+解析版)
- 财务人员销售技巧培训课件
- GB/T 45545-2025厨房家具配合尺寸
- 四川甘孜州能源发展集团有限公司招聘真题2024
- 2024年高考化学试卷(山东)(解析卷)
- 2025新款上海劳动合同样本
- 2025至2030中国超硬刀具市场现状调查及前景方向研究报告
评论
0/150
提交评论