首页 ExcelVBA编程24学时教程10

ExcelVBA编程24学时教程10

举报
开通vip

ExcelVBA编程24学时教程10 第10学时 Range对象 在V B A代码中,用得最多的单独的对象可能就要算 R a n g e对象了。R a n g e对象是E x c e l的对 象世界中真正的工作对象。作为 E x c e l用户,你将把大部分时间花在对 R a n g e对象的处理上。 在本学时中,将学习多种对R a n g e对象进行处理的技术。 本学时的重点包括: • 理解R a n g e对象的作用 • 使用Wi t h语句 • 使用For Each语句 • 分析几个使用R a n g e对象的过程 10.1 ...

ExcelVBA编程24学时教程10
第10学时 Range对象 在V B A代码中,用得最多的单独的对象可能就要算 R a n g e对象了。R a n g e对象是E x c e l的对 象世界中真正的工作对象。作为 E x c e l用户,你将把大部分时间花在对 R a n g e对象的处理上。 在本学时中,将学习多种对R a n g e对象进行处理的技术。 本学时的重点包括: • 理解R a n g e对象的作用 • 使用Wi t h语句 • 使用For Each语句 • 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 几个使用R a n g e对象的过程 10.1 Range对象 作为E x c e l用户,你基本上是和工作 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 上的单元格打交道。而在 V B A中,则称为和R a n g e 对象打交道。对于一个程序员来说,在所有的 E x c e l对象中,对R a n g e对象的处理是最频繁的。 正因为如此,在本学时中,你将学习有关 R a n g e对象的各种知识。 一个R a n g e对象可以是: • 一个单独的单元格。 • 对单元格的选择。 • 多个选择。 • 一行或者一列。 • 一个3 D区域。 10.1.1 Range对象的属性 和学习其他对象一样,首先需要学习 R a n g e对象的一些属性和 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 。 R a n g e对象最有用的 一些属性如下: • Address 本属性返回R a n g e的当前位置。 • Count 本属性用于决定R a n g e中单元格的数目。 • Formula 本属性返回用于计算显示值的公式。 • Offset 本属性对于从一个R a n g e移动到另一个R a n g e非常有用。 • Resize 通过它可设置当前选中的R a n g e的大小。 • Value 返回R a n g e的数值。 在上面的程序清单中列出的属性只是 R a n g e对象属性很小的一部分,实际上, R a n g e对象 的属性多达几十个。在下面的练习中,将熟悉 R a n g e对象的一些属性。在开始前,关闭所有的 工作簿,并打开一个新的工作簿。接着从创建一个新的工作表开始: 1)在单元格B 1中输入“1 0 0”,在单元格B 2中输入“2 0 0”, 在单元格B 3中输入“3 0 0”。 3)选中单元格B 4,并输入“= S U M ( B 1 : B 3 )”。 3)按下A l t + F 11键打开Visual Basic编辑器,在当前工作簿中插入一个新的模块。 4)创建一个名为“R a n g e P r o p e r t i e s”的过程。 5)为该过程输入如下代码: T h i s Wo r k b o o k . Wo r k s h e e t s ( " S h e e t 1 " ) . R a n g e ( " A 1 " ) . A c t i v a t e A c t i v e C e l l . O ff s e t ( 2 , 2 ) . A c t i v a t e MsgBox"The current active cell is "& ActiveCell.Address MsgBox"The value of B4 is "& Range("B4").Va l u e MsgBox"The formula of B4 is "& Range("B4").Formula 6)回到工作簿的S h e e t 1,运行R a n g e P r o p e r t i e s过程。显示的第一个消息框告诉你激活的 单元格为C 3,如图1 0 - 1所示。 7)单击“确定”按钮,下一个消息框显示单元格 B 4的数值。 8)单击“确定”按钮,最后一个消息框显示单元格 B 4的计算公式。 9)单击“确定”按钮,退出消息框。 熟悉上面例子中显示信息的细微区别了吗?为了确保对本例中代码的理解,请花一点时 间复习一下。程序清单1 0 - 1显示了完成后的过程。 程序清单10-1 RangeProperties过程 1: Sub RangeProperties () 2: ThisWo r k b o o k . Wo r k s h e e t s ( " S h e e t 1 " ) . R a n g e ( " A 1 " ) . A c t i v a t e 3: ActiveCell.Off s e t ( 2 , 2 ) . A c t i v a t e 4: MsgBox "The current active cell is "& ActiveCell.Address 5 : 6: MsgBox "The value of B4 is "& Range("B4").Va l u e 7: MsgBox"The formula of B4 is " & Range("B4").Formula 8: End Sub 84使用中文Excel 2000编程 2 4学时教程 图10-1 将A d d r e s s属性用 作创建消息框文本 的内容 在本过程中,做的第一件事是激活单元格 A 1: T h i s Wo r k b o o k . Wo r k s h e e t s ( " S h e e t 1 " ) . R a n g e ( " A 1 " ) . A c t i v a t e 激活单元格A 1之后,用O ff s e t方法移动到单元格 C 3,并且在消息框中显示新激活的单元 格的地址: A c t i v e C e l l . O ff s e t ( 2 , 2 ) . A c t i v a t e MsgBox "The current active cell is " & ActiveCell.Address 通过O ff s e t属性,可以移动到另一个R a n g e位置,这个属性的语法如下: r a n g e n a m e . O ff s e t (R o w O f f s e t , C o l u m n O f f s e t) 可选参数R o w O ff s e t和C o l u m n O ff s e t控制移动的方向。在本过程中,将这两个参数均设置 为2,这就将R a n g e移动到了C 3。 接下来是显示单元格B 4的数值和计算公式: MsgBox "The value of B4 is " &Range("B4").Va l u e MsgBox "The formula of B4 is " &Range("B4").Formula 这两行代码很好地说明了R a n g e对象的Va l u e属性和F o r m u l a属性的区别。Va l u e属性返回显 示在单元格中的数值,而F o r m u l a属性则返回单元格中实际输入的公式。 10.1.2 Range对象的方法 R a n g e对象同样具有多种多样的方法,包括: • Activate 激活一个R a n g e。 • Clear 清除一个R a n g e的内容。 • Copy 将一个R a n g e的内容复制到剪贴板。 • Cut 将一个R a n g e的内容剪切到剪贴板。 • PasteSpecial 将剪贴板的内容粘贴到R a n g e中。 • Select 选择一个R a n g e。 10.2 使用With语句 现在,你对E x c e l中最常用的对象已经比较熟悉了。接下来,将学习一个结构,通过这个 结构可以使对对象的处理更为容易。当对 R a n g e对象进行处理时,一个最普通的任务是设置各 种各样的属性。程序清单1 0 - 2显示了用于对R a n g e对象执行各种格式设置的代码的例子。 程序清单10-2 设置R a n g e对象格式的代码 1: Range("A1:A6").NumberFormat = "#,##0.00" 2: Range("A1:A6").Font.Name = "Courier New " 3: Range("A1:A6").Font.FontStyle = "Regular" 4: Range("A1:A6").Font.Size = 11 5: Range("A1:A6").Font.Strikethrough = False 6: Range("A1:A6").Font.Superscript = False 7: Range("A1:A6").Font.Subscript = False 8: Range("A1:A6").Font.OutlineFont = False 9: Range("A1:A6").Font.Shadow = False 10: Range("A1:A6").Font.Underline = xlUnderlineStyleNone 11: Range("A1:A6").Font.ColorIndex = xlAutomatic 如果需要输入程序清单 1 0 - 2中的代码,你很快就会对重复地输入 R a n g e (“A 1 : A 6”)感到 第10学时 Range 对象使用85 厌烦。可以用对象变量来引用 R a n g e ("A 1 : A 6"),但是仍然需要重复地输入对象变量的名字。 V B A提供了一种避免这样的方式—Wi t h语句。Wi t h语句用于设置同一对象的多个属性,或 者执行同一对象的多个方法。程序清单 1 0 - 3中显示了使用Wi t h语句完成同样功能的代码。 程序清单10-3 Wi t h语句的例子 1: With Range ("A1:A6") 2: .NumberFormat = "#, ##0.00" 3: Wi t h . F o n t 4: .Name = "Courier New" 5: .FontStyle = "Regular" 6: .Size = 11 7: .Strikethrough = False 8: .Superscript = False 9 : .Subscript = False 10: .OutlineFont = False 11: .Shadow = False 1 2 : .Underline = xlUnderlineStyleNone 13: .ColorIndex = xlAutomatic 14: End Wi t h 15: End Wi t h 虽然程序清单中的 Wi t h语句并没有减少代码的行数,但是减少了输入量。 Wi t h语句的语 法如下: With object [s t a t e m e n t s] End Wi t h 语法中的o b j e c t是s t a t e m e n t s部分中的属性和方法的操作对象。从程序清单 1 0 - 3中 可以看 出,s t a t e m e n t s中的每一行都以符号“ .”开始。同样需要注意的是,可以将Wi t h语句嵌套使用。 在程序清单1 0 - 3中,针对F o n t对象的Wi t h语句嵌套在针对R a n g e对象的Wi t h语句中。程序清单 1 0 - 4举例说明了如何在同一个Wi t h语句中使用属性和方法。 程序清单10-4 包含属性和方法的Wi t h语句 1: Sub Wi t h Worksheet () 2: With ThisWo r k b o o k 3: .SaveAs "Wi t h E x a m p l e " 4: MsgBox "Save Status: "&.Saved 5: End Wi t h 6: End Sub 10.3 使用For Each语句 Wi t h语句是用来执行同一个对象的多个语句,而 For Each语句则是用来对多个对象执行同 一条语句。通过For Each语句,可以对集合中的每个元素重复执行同样的语句。 For Each语句也可用于数组。 For Each语句的语法如下: For Each e l e m e n t In g r o u p 86使用中文Excel 2000编程 2 4学时教程 [ S t a t e m e n t s ] [Exit For] [ S t a t e m e n t s ] Next 注意,该语法支持Exit For从句。和其他E x i t从句一样,Exit For从句通常位于一条 I f语句 中。如果需要改变R a n g e中每个单元格的数值,可以使用程序清单 1 0 - 5中的代码。 程序清单10-5 For Each语句的例子 1: Sub ForExample () 2: Dim x As Range 3 : 4: For Each x In ThisWo r k b o o k . Wo r k s h e e t s ( " S h e e t 1 " ) . R a n g e ( " A 1 : A 6 " ) 5: x.Value = x.Value + 10 6: Next 7: End Sub 10.4 Range对象编程示例 在本部分中,你将看到多个使用R a n g e对象的代码示例。这些代码示例都经过了精挑细选, 是程序员最常用的。 第一个代码示例是改变一个 R a n g e中每行的格式设置。对于一张很长的工作表,为了使它 易于查看和打印,常常需要这样做。在本例中,假设已经有了一张和图 1 0 - 2相似的工作表, 注意第一行是标 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 。需要将从第三行开始的内容隔行加粗。完成这一任务的过程请参看程序 清单1 0 - 6。 程序清单10-6 使用R o w对象和For Next语句 1: Sub BoldEveryOther () 2: Dim iCounter As Integer 第10学时 Range 对象使用87 图10-2 将用B o l d E v e r y O t h e r 过程对本工作表进行 处理 3 : 4: For iCounter = 3 To ThisWo r k b o o k . Worksheets ("Sheet1"). _ Range("A1:C25").Rows.Count Step 2 5: ThisWo r k b o o k . Wo r k s h e e t s ( " S h e e t 1 " ) . R a n g e ( " A 1 : C 2 5 " ) . _ Rows(iCounter).Font.Bold = Tr u e 6: Next 7 : 8: End Sub 本过程中主要的关键在于For Next语句。注意 i C o u n t e r设置的初始值为3,即从第三行开始 隔行加粗。S t e p的值为2决定了是隔行加粗。图1 0 - 3显示了该过程运行后的工作表。 你也许已经意识到,如果知道需要处理的R a n g e对象的地址,那么本例中的代码非常适用。 但是如果不知道R a n g e对象的大小时,又应该怎么办呢?有关这方面的一个经典的例子是,当 从其他应用程序(例如数据库)向工作表中导入数据时的情况,你也许并不知道会返回多少 行数据。程序清单1 0 - 7中的代码显示了选中一个不知道大小的 R a n g e的例子。 程序清单10-7 选中一个不知道大小的R a n g e 1: Sub SelectRange () 2: ThisWo r k b o o k . Wo r k s h e e t s ( " S h e e t 1 " ) . R a n g e ( " A 1 " ) . A c t i v a t e 3: ActiveCell.CurrentRegion.Select 4: MsgBox"The address of the selected range "& Selection.Address 5: End Sub S e l e c t R a n g e的关键之处在于C u r r e n t R e g i o n属性的使用,本属性返回第一个空行和空列所 包围的区域。通过选中C u r r e n t R e g i o n,用不着知道R a n g e的大小。 最后一个过程将执行复制 /粘贴操作。在程序清单1 0 - 8的代码中,对选中的区域进行复制, 并且将复制的内容粘贴到工作表的另一位置。 88使用中文Excel 2000编程 2 4学时教程 图10-3 B o l d E v e r y O t h e r过 程运行后,R a n g e 对象具有了理想的 格式 程序清单10-8 复制和粘贴一个区域 1: Sub CopyAndPaste () 2: Selection.Copy 3: Range("F3").Select 4: ActiveSheet.Paste 5: Application.CutCopyMode = False 6: End Sub 语句S e l e c t i o n . C o p y将选中的区域放到剪贴板上。下一步是移动到粘贴所复制的内容的理 想位置。接着用P a s t e方法将所复制的区域从剪贴板复制到新的位置上。最后,将 A p p l i c a t i o n 对象的C u t C o p y M o d e属性设置为F a l s e。如果不这样做,源文本周围的选取框(移动的虚线) 将一直保持,并且状态栏上将一直显示移动目标的指令。 10.5 学时小结 到目前为止,你对R a n g e对象的处理应该是得心应手了,因为你已经在多个过程中练习了 R a n g e对象的几个属性和方法。 你还学习了两个 V B A的结构,通过它们可以使对象的处理更加简化。 Wi t h语句用于为同 一对象设置多个属性或者执行多个方法,而 For Each语句则为多个对象执行同样的语句。 在本学时的最后一部分,学习了几个对 R a n g e对象进行处理的过程,这些过程为 R a n g e对 象的用法提供了示例。 10.6 专家答疑 问题:为什么没有R a n g e集合? 解答:集合的一个必要条件是可以添加元素。工作表上的单元格(也就是 r a n g e)的数目 是由M i c r o s o f t预先定义的,没有办法向工作表添加更多的单元格,正因为如此,没有 R a n g e 集合。 问题:F o r语句和For Each语句有什么不同? 解答:首先,讨论一下这两条语句的共同点:它们都是多次执行相同的语句。而问题在 于,它们有什么不同?对于 F o r语句而言,语句执行的次数是由一个起始数字和一个结束数字 所控制,而For Each语句中语句执行的次数是由所操作的对象的数目或者数组的元素的数目所 控制。 10.7 课外作业 思考题和练习题是为了使你能够进一步地理解所学内容, 答案 八年级地理上册填图题岩土工程勘察试题省略号的作用及举例应急救援安全知识车间5s试题及答案 请参考附录。 10.7.1 思考题 1)判断题:在V B A中R a n g e(区域)总是指多个单元格。 2)根据一个R a n g e对象的地址访问另一个R a n g e对象时,要用到R a n g e对象的哪一个属性? 3)如果需要增加R a n g e对象中每个单元格的数值,使用什么语句可以用最少的代码实现? 4)什么属性可以根据一个R a n g e对象的位置选中另一个未知的 R a n g e对象? 5)怎样才能知道一个R a n g e对象中有多少个单元格? 第10学时 Range 对象使用89 6)删除R a n g e对象中的内容需要使用什么属性? 7)你必须设置同一对象的多个属性,完成这样的任务的最有效方式是什么? 10.7.2 练习题 打开一个新的工作簿,在工作簿的第一张工作表中输入如下数据: 单 元 格 数 值 单 元 格 数 值 A 1 I t e m B 1 P r i c e A 2 Wi d g e t B 2 1 5 A 3 G i d g e t B 3 5 A 4 G i z m o B 4 3 A 5 J u n k B 5 7 A 6 S t u ff B 6 9 创建一个名为R e d u c e P r i c e s的过程。本过程必须将R a n g e ( B 2 : B 6 )中每个单元格的数值减5。 如果价格小于或者等于0,将价格和项目名用红色粗体字显示。如果R a n g e中单元格的数值有小 于或者等于0的,则显示一个消息框,让用户在结束过程前知道出了问题。运行并测试该过程。 90使用中文Excel 2000编程 2 4学时教程 第10 学时Range 对象 10.1 Range 对象 10.1.1 Range 对象的属性 10.1.2 Range 对象的方法 10.2 使用With 语句 10.3 使用For Each 语句 10.4 Range 对象编程示例 10.5 学时小结 10.6 专家答疑 10.7 课外作业 10.7.1 思考题 10.7.2 练习题
本文档为【ExcelVBA编程24学时教程10】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_262704
暂无简介~
格式:pdf
大小:513KB
软件:PDF阅读器
页数:8
分类:互联网
上传时间:2011-09-11
浏览量:33