零基础学Excel VBA(下篇)_第1页
零基础学Excel VBA(下篇)_第2页
零基础学Excel VBA(下篇)_第3页
零基础学Excel VBA(下篇)_第4页
零基础学Excel VBA(下篇)_第5页
已阅读5页,还剩311页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

零基础学ExcelVBA(下篇)目录\h第8章单元格的相关操作\h8.1单元格的选取\h8.2单元格中内容的维护\h8.3单元格的插入与删除\h8.4单元格的隐藏\h8.5单元格的查找\h8.6单元格的处理\h8.7单元格的应用\h8.8举一反三\h第9章对话框的相关操作\h9.1MsgBox函数对话框\h9.2InputBox函数对话框\h9.3调用与屏蔽Excel对话框\h9.4对话框的应用\h9.5举一反三\h第四篇ExcelVBA界面设计篇\h第10章应用程序界面设计\h10.1程序界面设计原则\h10.2用户窗体的使用方法\h10.3常用控件的使用\h10.4举一反三\h第11章常用应用程序界面及编码设计\h11.1系统登录程序的设计\h11.2数据录入程序的设计\h11.3数据删除与修改程序的设计\h11.4查询程序的设计\h11.5打印程序的设计\h11.6举一反三\h第12章图表与数据透视表的程序设计\h12.1Chart对象概述\h12.2设计图表相关的程序\h12.3与透视表有关的数据对象\h12.4设计数据透视表相关的程序\h12.5举一反三\h第13章自定义函数\h13.1编写自定义函数\h13.2使用自定义函数\h13.3在应用程序当中使用自定义函数\h13.4举一反三\h第五篇案例应用篇\h第14章通讯录管理系统\h14.1设计思路\h14.2系统登录设计\h14.3系统主界面设计\h14.4通讯录信息录入设计\h14.5数据删除与修改设计\h14.6通讯录信息查询设计\h本章小结\h第15章项目审计管理系统\h15.1设计思路\h15.2登录权限设计\h15.3系统主界面设计\h15.4项目信息管理窗体设计\h15.5项目信息审核设计\h15.6项目信息查询设计\h本章小结\h第16章企业员工管理系统\h16.1设计思路\h16.2系统登录设计\h16.3系统主界面设计\h16.4员工信息管理窗体的设计\h16.5员工工资管理设计\h16.6员工信息打印窗体设计\h本章小结\h附录ExcelVBA常用事件和方法\h光盘内容第8章单元格的相关操作前面的两章分别讲解了工作簿和工作表的相关操作。在操作Excel的过程中,主要是对工作表中单元格进行操作。单元格泛指工作表中的一个或多个单元格,本章将主要讲解与单元格有关的知识。8.1单元格的选取在操作单元格之前,首先需要选取单元格。本节将讲解通过各种不同的方式来选取单元格。8.1.1单个单元格的选取在ExcelVBA当中,通常使用Range对象和Cells对象来表示单元格。使用Range对象和Cells对象选取单元格主要有以下几种表示的方法。使用Range对象选取单元格的方法如下所示。(1)通过单元格的地址选取单元格,语法格式如下所示。Range("单元格地址").Select如选取A6单元格的程序代码为:Range("A6").Select(2)通过单元格的列标和行数确定选取的单元格,语法格式如下所示。Range("列标"&"行数").Select如选取B6单元格的程序代码为:Range("B"&6).Select(3)根据定义的单元格名称选取单元格,语法格式如下所示。Range("单元格名称").Select如选取单元格名称为"MyCells"单元格的程序代码为:Range("MyCells").Select使用Cells对象选取单元格的方法如下所示。(1)通过确定单元格所在的行数和列数选取单元格,语法格式如下所示。Cells(行数,列数).Select如选取单元格A1的代码为:Cells(1,1).Select说明因为单元格的行数为1,列数为1,所以A1用Cells(1,1)进行表示。(2)通过确定单元格所在的行数和列标选取单元格,语法格式如下所示。Cells(行数,列标).Select如选取单元格A1的代码为:Cells(1,"A").Select(3)根据单元格的序号选取单元格,语法格式如下所示。Cells(单元格序号).Select如选取表示序号为2的单元格的代码为:Cells(2).Select下面再通过一个示例来讲解如何选取单个单元格。示例8-1选取单个单元格(\代码\第8章\8.1.1.xlsm)本示例实现的是在工作簿中单击【选取单元格】按钮之后,将弹出一个输入提示对话框,在该对话框中输入要选取单元格的地址之后,单击【确定】按钮,将选定指定地址的单元格。示例实现的操作步骤如下所示。(1)新建一个Excel工作簿,进入到VBE开发环境当中。(2)在VBE开发环境当中添加一个模块,双击模块进入到模块的代码窗口当中。(3)在代码窗口中分别添加如下的程序代码。01Sub选取单个单元格()02Dimsels03sels=InputBox("请输入要选取单元格的地址","提示信息")04Range(sels).Select05EndSub在上述第4行代码中,通过使用Range对象的Select方法选取指定的单元格,参数sels表示的是指定选取单元格的地址。(4)在工作表"Sheet1"中添加一个按钮控件,在弹出的“指定宏”窗口中选择宏“选取单个单元格”,将按钮的显示名称修改为“选取”。(5)将鼠标离开按钮控件,单击【选取】按钮,在弹出的输入对话框中输入要选取单元格的地址,如图8.1所示。单击【确定】按钮,被指定地址的单元格将被选中,如图8.2所示。图8.1输入选取单元格的地址图8.2被选取的单元格实际上,还可以通过很多种的方法选取单个指定的单元格,限于篇幅,这里就不再介绍了,请读者自己去思考练习。8.1.2选取特定单元格使用ExcelVBA程序代码除了可以选取指定的单元格之外,还可以选取某些特定的单元格,如选取当前已使用的单元格、选取与单元格相邻区域的单元格和选取区域端点单元格等。本节将分别讲解如何选取这些特定的单元格。1.选取当前已使用的单元格当前已使用的单元格是指当前工作表中已经使用过的单元格,即无论单元格中是否还存在着数据,只要曾经使用过就都属于当前已使用的单元格。使用工作表的UsedRange属性可以选取当前已使用的单元格,下面通过一个示例进行讲解。示例8-2选取当前已使用的单元格(\代码\第8章\8.1.2(1).xlsm)本示例实现的是在工作表中单击【选取已使用的单元格】按钮之后,当前已使用和使用过的单元格将全部被选中。示例实现的操作步骤如下所示。(1)新建一个Excel工作簿,进入到VBE开发环境当中。(2)在VBE环境当中添加一个模块。(3)进入到模块的代码窗口当中,并且在代码窗口中分别添加如下的程序代码。01Sub选取已使用的单元格()02'选取当前已使用的单元格03ActiveSheet.UsedRange.Select04EndSub在上述的第3行代码中,通过使用ActiveSheet.UsedRange.Select语句选取当前已使用过的单元格。(4)在工作表"Sheet1"中添加一个按钮控件,在弹出的“指定宏”窗口中选择宏“选取已使用的单元格”,将按钮的显示名称修改为“选取已使用的单元格”。(5)将鼠标离开按钮控件,单击【选取已使用的单元格】按钮,则当前已使用过的单元格将全部被选中,如图8.3所示。图8.3选取当前已使用过的单元格2.根据具体要求选取单元格在ExcelVBA中,通过使用Range对象的End属性可以实现通过按下Ctrl+方向键选取单元格的效果,具体的实现方法如下所示。❑End(xlup):相当于按下Ctrl+向上箭头↑。❑End(xldown):相当于按下Ctrl+向下箭头↓。❑End(xltoleft):相当于按下Ctrl+向左箭头←。❑End(xltoright):相当于按下Ctrl+向右箭头→。下面通过一个示例来具体讲解这几种选取单元格的方法。示例8-3根据具体要求选取单元格(\代码\第8章\8.1.2(2).xlsm)本示例实现的是在工作表中单击【向上选取】按钮,则选取工作表中B列最后1个非空的单元格;如果单击【向下选取】按钮,则选取工作表中B列第1个非空的单元格;如果单击【向左选取】按钮,则选取工作表中第4行最左边第1个非空的单元格;如果单击【向右选取】按钮,则选取工作表中第7行最右边第1个非空的单元格。示例实现的操作步骤如下所示。(1)新建一个Excel工作簿,进入到VBE开发环境当中。(2)在VBE环境当中添加一个模块。(3)在模块的代码窗口中分别添加如下的程序代码。01'选取工作表中B列最后一个非空的单元格02Sub向上选取()03Range("B65536").End(xlUp).Select04EndSub05'选取工作表中B列第一个非空的单元格06Sub向下选取()07IfRange("B1")=""Then08Range("B1").End(xlDown).Select09Else10Range("B1").Select11EndIf12EndSub13'选取工作表中第4行最左边第一个非空的单元格14Sub向左选取()15Range("IV4").End(xlToLeft).Select16EndSub17'选取工作表中第7行最右边第一个非空的单元格18Sub向右选取()19IfRange("A7")=""Then20Range("A7").End(xlToRight).Select21Else22Range("A7").Select23EndIf24EndSub代码中的重要语句解释说明如下所示。❑第3行程序代码Range("B65536").End(xlUp).Select:在选取B列最后1个非空单元格时,需要从B列最后一个单元格B65536向上进行查找。❑第8行程序代码Range("B1").End(xlDown).Select:在选取B列第1个非空单元格时,相当于从B1单元格开始向下进行查找,直到找到符合条件的单元格为止。❑第15行程序代码Range("IV4").End(xlToLeft).Select:在选取第4行最右边的一个非空单元格时,需要从最右边单元格向左进行查找。❑第20行程序代码Range("A7").End(xlToRight).Select:在选取第7行最左边的一个非空单元格时,需要从最左边单元格向右进行查找。(4)在工作表"Sheet1"中添加4个按钮控件,在“按钮1”弹出的“指定宏”窗口中选择宏“向上选取”,将按钮的显示名称修改为“向上选取”;在“按钮2”弹出的“指定宏”窗口中选择宏“向下选取”,将按钮的显示名称修改为“向下选取”;在“按钮3”弹出的“指定宏”窗口中选择宏“向左选取”,将按钮的显示名称修改为“向左选取”;在“按钮4”弹出的“指定宏”窗口中选择宏“向右选取”,将按钮的显示名称修改为“向右选取”。(5)将鼠标离开按钮控件,单击【向上选取】按钮,将选中工作表中B列最后一个非空的单元格,如图8.4所示。图8.4向上选取单元格的显示结果(6)单击【向下选取】按钮,将选中工作表中B列第1个非空的单元格,如图8.5所示。图8.5向下选取单元格的显示结果(7)单击【向左选取】按钮,将选中工作表中第4行最右端第1个非空的单元格,如图8.6所示。图8.6向左选取单元格的显示结果(8)单击【向右选取】按钮,将选中工作表中第7行最左端第1个非空的单元格,如图8.7所示。图8.7向左选取单元格的显示结果8.1.3选取全部单元格在对工作表进行操作的过程中,可以通过使用ExcelVBA程序代码选取工作表中全部的单元格。示例8-4选取全部的单元格(\代码\第8章\8.1.3.xlsm)本示例实现的是单击工作表中【全选】按钮之后,当前工作表中的所有单元格全部选中。示例实现的操作步骤如下所示。(1)新建一个Excel工作簿,进入到VBE开发环境当中。(2)在VBE环境当中添加一个模块,并且进入到模块的代码窗口当中。(3)在模块的代码窗口中添加如下的程序代码。'选中全部单元格Sub全选1()Cells.SelectEndSub除了通过上述代码可以全选单元格之外,还可以通过选取所有行单元格和选取所有列单元格的方式选取工作表中所有的单元格,具体实现的程序代码如下所示。'通过选取所有行单元格的方式选取所有单元格Sub全选2()Rows.SelectEndSub'通过选取所有列单元格的方式选取所有单元格Sub全选3()Columns.SelectEndSub(4)在工作表"Sheet1"中添加一个按钮控件,在弹出的“指定宏”窗口中选择宏“全选1”,将按钮的显示名称修改为“全选”。(5)将鼠标离开按钮控件,单击【全选】按钮,则工作表中的单元格将全部被选中,如图8.8所示。图8.8选取全部单元格注意在Excel工作表当中,单击工作表左上角的【全选】按钮,也可以选中工作表中所有的单元格,如图8.9所示。图8.9通过单击【全选】按钮选取所有单元格8.1.4选取单元格区域除了上述讲解的几种选取单元格的方法之外,还可以按照指定的区域选取单元格。选取单元格区域主要分为选取连续单元格区域和选取不连续单元格区域两种。1.选取连续单元格区域连续单元格区域是指在工作表中,从某个单元格到另一个单元格之间的区域,如图8.10所示的B2:E6就是一个单元格连续区域。图8.10选取连续的单元格通过ExcelVBA程序代码也可以选取连续的单元格区域,下面通过示例进行讲解。示例8-5选取连续的单元格区域(\代码\第8章\8.1.4(1).xlsm)本示例实现的是在单击工作表中【选取连续区域】按钮之后,弹出一个提示输入起始单元格地址的输入对话框,在输入单元格的地址之后,单击【确定】按钮,然后将再次弹出一个提示输入终止单元格地址的输入对话框。在输入单元格的地址之后,单击【确定】按钮,则工作表中被指定连续区域内的单元格将全部被选中。示例实现的操作步骤如下所示。(1)新建一个Excel工作簿,进入到VBE开发环境当中,在开发模块中添加一个模块。(2)进入到模块的代码窗口当中,并且在代码窗口中添加如下的程序代码。Sub选取连续区域()DimstartcellsAsStringDimendcellsAsStringstartcells=InputBox("请输入选择区域的起始单元格地址","提示信息")endcellls=InputBox("请输入选择区域的终止单元格地址","提示信息")'选取连续区域的单元格Range(startcells,endcellls).SelectEndSub(3)在工作表"Sheet1"中添加一个按钮控件,在弹出的“指定宏”窗口中选择宏“选取连续区域”,将按钮的显示名称修改为“选取连续区域”。(4)将鼠标离开按钮控件,单击【选取连续区域】按钮,将弹出一个提示输入起始单元格地址的输入对话框,在该输入对话框中输入"C4",如图8.11所示。图8.11输入选取连续区域单元格的起始单元格地址(5)在图8.11所示的输入对话框中单击【确定】按钮,将再次弹出一个提示输入终止单元格地址的输入对话框,在该输入对话框中输入"E9"之后,单击【确定】按钮,如图8.12所示。图8.12输入选取连续区域单元格的终止单元格地址(6)在图8.12所示的输入对话框中单击【确定】按钮,则工作表中的C4:E9区域内的单元格将全部被选中,如图8.13所示。图8.13选取连续区域内的单元格2.选取不连续单元格区域前面讲解了通过ExcelVBA代码实现选取连续区域内的单元格的方法,同样,也可以实现选取不连续区域内的单元格。示例8-6选取不连续的单元格区域(\代码\第8章\8.1.4(2).xlsm)本示例实现的是在工作表中单击【选取不连续区域】按钮之后,将分别选中工作表"Sheet1"中的B2:B10单元格区域、D3:D8单元格区域和F2:G11单元格区域。示例实现的操作步骤如下所示。(1)新建一个Excel工作簿,进入到VBE开发环境当中。(2)在VBE环境当中添加一个模块,双击模块进入到模块的代码窗口当中。(3)在模块的代码窗口中添加如下的程序代码。Sub选取不连续区域()'选取不连续区域的单元格Range("B2:B10,D3:D8,F2:G11").SelectEndSub(4)在工作表"Sheet1"中添加一个按钮控件,在弹出的“指定宏”窗口中选择宏“选取不连续区域”,将按钮的显示名称修改为“选取不连续区域”。(5)将鼠标离开按钮控件,单击【选取不连续区域】按钮,则工作表中的B2:B10、D3:D8和F2:G113个单元格区域分别被选中,如图8.14所示。图8.14选取不连续的单元格区域在选取不连续的单元格区域时,可以交叉选取两个或多个不连续的单元格区域,请看下面的示例。示例8-7选取不连续且交叉的单元格区域(\代码\第8章\8.1.4(3).xlsm)本示例实现的是在工作表中单击【选取不连续区域】按钮之后,将分别选中工作表"Sheet1"中的B2:B10单元格区域、D4:H8单元格区域和F2:G11单元格区域。示例实现的操作步骤如下所示。(1)新建一个Excel工作簿。(2)进入到VBE开发环境当中,在VBE环境当中添加一个模块,双击模块进入到模块的代码窗口当中。(3)在模块的代码窗口中添加如下的程序代码。Sub选取不连续区域()'选取不连续区域的单元格Range("B2:B10,D4:H8,F2:G11").SelectEndSub(4)在工作表"Sheet1"中添加一个按钮控件,在弹出的“指定宏”窗口中选择宏“选取不连续区域”,将按钮的显示名称修改为“选取不连续区域”。(5)将鼠标离开按钮控件,单击【选取不连续区域】按钮,则工作表中的B2:B10、D4:H8和F2:G113个单元格区域分别被选中,并且选取的D4:H8和F2:G11两个单元格区域中有一部分单元格区域被重复选取,如图8.15所示。图8.15选取不连续的并且交叉的单元格区域8.1.5移动单元格的选取区域通过ExcelVBA程序代码还可以动态移动或改变单元格的选取区域。在ExcelVBA中,通过使用Offset函数和Resize函数来完成改变单元格选取范围的功能,函数原形如下所示。Offset(移动行数,移动列数)Resize(总行数,总列数)函数中的各项参数说明如下所示。❑移动列数:如果为正值,表示向右移动指定的列数;如果为负值,则表示向左移动指定的列数。❑移动行数:如果为正值,表示向下移动指定的行数;如果为负值,则表示向上移动指定的行数。❑总行数:表示移动后的单元格区域的行数。❑总列数:表示移动后的单元格区域的列数。下面通过一个示例讲解如何通过使用上面的函数来实现改变单元格的选取区域。示例8-8移动单元格的选取区域(1)(\代码\第8章\8.1.5.xlsm)本示例实现的是在工作表中单击【移动】按钮之后,将以B1单元格为参照单元格,并且向下移动两个单元格位置,向右移动一个单元格位置,然后再选中6行3列的单元格区域。示例实现的操作步骤如下所示。(1)新建一个Excel工作簿,在VBE开发环境当中添加一个模块。(2)在模块的代码窗口中分别添加如下的程序代码。01Sub移动()02Range("B1").Offset(2,1).Resize(6,3).Select03EndSub在上述代码的第2行代码中,B1单元格为参照单元格,Offset函数中的2表示向下移动2个单元格位置,1表示向右移动1个单元格位置;Resize函数中的6表示移动后区域行数为6,3表示移动后区域列数为3。(3)在工作表"Sheet1"中添加一个按钮控件,在弹出的“指定宏”窗口中选择宏“移动”,将按钮的显示名称修改为“移动”。(4)将鼠标离开按钮控件,单击【移动】按钮,则以B1单元格为参照单元格发生移动,改变后的单元格区域如图8.16所示。图8.16向下和向右移动单元格区域示例8-9移动单元格的选取区域(2)(\代码\第8章\8.1.5(1).xlsm)本示例实现的是在工作表中单击【移动】按钮之后,将以B1单元格为参照单元格,向下移动两个单元格位置,向左移动一个单元格位置,然后再选中6行3列的单元格区域。示例实现的操作步骤如下所示。(1)新建一个Excel工作簿,在VBE开发环境当中添加一个模块。(2)在模块的代码窗口中添加如下的程序代码。01Sub移动()02Range("B1").Offset(2,-1).Resize(6,3).Select03EndSub在上述代码的第2行代码中,B1单元格为参照单元格,Offset函数中的2表示向下移动2个单元格位置,-1表示向左移动1个单元格位置;Resize函数中的6表示移动后区域行数为6,3表示移动后区域列数为3。(3)在工作表"Sheet1"中添加一个按钮控件,在弹出的“指定宏”窗口中选择宏“移动”,将按钮的显示名称修改为“移动”。(4)将鼠标离开按钮控件,单击【移动】按钮,则以B1单元格为参照单元格移动,改变后的单元格区域如图8.17所示。图8.17向下和向左移动单元格区域示例8-10移动单元格的选取区域(3)(\代码\第8章\8.1.5(2).xlsm)本示例实现的是在工作表中单击【移动】按钮之后,将以C6单元格为参照单元格,向上移动3个单元格位置,向左移动两个单元格位置,然后再选中3行3列的单元格区域。示例实现的操作步骤如下所示。(1)新建一个Excel工作簿,在VBE开发环境当中添加一个模块。(2)在模块的代码窗口中添加如下的程序代码。01Sub移动()02Range("C6").Offset(-3,-2).Resize(3,3).Select03EndSub在上述代码的第2行代码中,C6单元格为参照单元格,Offset函数中的-3表示向上移动3个单元格位置,-2表示向左移动2个单元格位置;Resize函数中的3表示移动后区域行数为3,3表示移动后区域列数为3。(3)在工作表"Sheet1"中添加一个按钮控件,在弹出的“指定宏”窗口中选择宏“移动”,将按钮的显示名称修改为“移动”。(4)将鼠标离开按钮控件,单击【移动】按钮,则以C6单元格为参照单元格移动,改变后的单元格区域如图8.18所示。图8.18向上和向左移动单元格区域8.1.6选取整行和整列单元格除了通过上述的方法选取单元格之外,在工作表中还可以选取一行或一列,多行或多列的单元格。在ExcelVBA中可以用Rows属性、Columns属性来表示行和列,同时也可以用Range来表示行和列。示例8-11选取整行和整列单元格(\代码\第8章\8.1.6.xlsm)本示例实现的是在工作表中单击【选择行】按钮,将选中工作表中的整行单元格信息;单击【选择列】按钮,则选中工作表中的整列单元格信息;单击【选择多行】按钮,则选中工作表中的多行单元格信息;单击【选择多列】按钮,则选中工作表中的多列的单元格信息。示例实现的操作步骤如下所示。(1)新建一个Excel工作簿,进入到VBE开发环境当中。(2)在VBE环境当中添加一个模块,双击模块进入到模块的代码窗口当中。(3)在模块的代码窗口中添加如下的程序代码。01'选取单行单元格02Sub选取单行()03Range("5:5").Select04EndSub05'选取多行单元格06Sub选取单行()07Range("5:8").Select08EndSub09'选取单列单元格10Sub选取单列()11Columns(2).Select12EndSub13'选取多列单元格14Sub选取多列()15Range("B:E").Select16EndSub在上述的第15行代码中,B相当于数字2,E相当于数字5。(4)在工作表"Sheet1"中添加3个按钮控件,在“按钮1”弹出的“指定宏”窗口中选择宏“选取单行”,将按钮的显示名称修改为“选取行”;在“按钮2”弹出的“指定宏”窗口中选择宏“选取单列”,将按钮的显示名称修改为“选取列”;在“按钮3”弹出的“指定宏”窗口中选择宏“选取多行”,将按钮的显示名称修改为“选取多行”;在“按钮4”弹出的“指定宏”窗口中选择宏“选取多列”,将按钮的显示名称修改为“选取多列”。(5)将鼠标离开按钮控件,单击【选择行】按钮,工作表中的第5行单元格全部被选中,如图8.19所示。图8.19选择整行单元格(6)单击【选择列】按钮,工作表中的第2列(B列)单元格将全部被选中,如图8.20所示。图8.20选择整列单元格(7)单击【选择多行】按钮,则工作表中从第5行到第8行的单元格全部被选中,如图8.21所示。图8.21选择多行单元格(8)单击【选择多列】按钮,则工作表中从第2列(B列)到第5列(E列)的单元格全部被选中,如图8.22所示。图8.22选择多列单元格8.2单元格中内容的维护在操作Excel的过程中,大部分的操作都是围绕对单元格进行输入与输出。本节将详细讲解有关单元格信息的输入与输出方面的知识,主要包括常量数据的输入与输出和使用公式输入与输出数据等内容。8.2.1单元格内容的输入向Excel的单元格中输入数据主要包括向单元格中输入常量信息和使用公式向单元格中输入数据两个方面,下面通过示例详细地介绍一下这两个方面的内容。1.向单元格中输入常量数据常量主要是指数字和字符等,在ExcelVBA中,通过使用单元格对象的Value属性来实现向单元格中输入常量数据的功能。示例8-12常量数据的输入(\代码\第8章\8.2.1(1).xlsm)本示例实现的是在单击工作表中的【输入常量】按钮之后,在工作表"Sheet1"的B1:B10单元格中将输入一列字符B,在C1:C10单元格中将输入1~10之间的数值数据信息。示例实现的操作步骤如下所示。(1)打开Excel,新建一个Excel工作簿,进入到VBE开发环境当中。(2)添加一个模块,在模块的代码窗口中添加如下的程序代码。'输入常量数据Sub常量数据的输入()'输入字符常量Range("B1:B10").Value="B"'输入数值常量DimiAsIntegerFori=1To10Cells(i,3)=iNextiEndSub(3)在工作表"Sheet1"中添加一个按钮控件,在弹出的“指定宏”窗口中选择宏“常量数据的输入”,然后单击【确定】按钮。(4)将鼠标离开按钮控件,单击【输入常量】按钮,则在工作表中的B1:B10单元格中将输入一列字符B,在C1:C10单元格中将输入1~10之间的数值数据,如图8.23所示。图8.23向单元格中输入常量数据2.使用公式向单元格中输入数据在ExcelVBA中,通过使用Formula属性可以在单元格中输入公式并且取得单元格的公式。在单元格中根据公式输入数据分为使用固定公式和可变公式两种情况。固定公式是指使用的公式在程序中已经存在,而可变公式是指所输入的公式位置不固定。下面分别通过示例来讲解这两种情况。示例8-13根据固定公式输入数据(\代码\第8章\8.2.1(2).xlsm)本示例实现的是在打开工作簿之后,工作表D列“库存数量”字段中的数据信息和G列“金额”字段中的数据信息,将会根据固定的公式自动计算出相应的结果。示例实现的操作步骤如下所示。(1)打开Excel,新建一个Excel工作簿,在工作表"Sheet1"中输入如图8.24所示的数据信息。图8.24向工作表中输入的数据信息(2)在VBE开发环境中双击"ThisWorkbook"对象,进入到工作簿对象的代码窗口当中。(3)在代码窗口中的“对象”列表框中选择"Workbook"对象,在“过程”列表框中选择"Open"事件,然后在"Workbook"对象的"Open"事件中添加如下的程序代码。PrivateSubWorkbook_Open()'计算第4行Range("D4").Formula="=B4+C4"Range("G4").Formula="=D4*F4"'计算第5行Range("D5").Formula="=B5+C5"Range("G5").Formula="=D5*F5"'计算第6行Range("D6").Formula="=B4+C6"Range("G6").Formula="=D4*F6"EndSub(4)关闭工作簿。再重新打开工作簿时,工作表中的“库存数量”列中的数据将会由“进货数量”列中的数据与“剩余数量”列中的数据的和得出;而“金额”列中的数据将会由“库存数量”列中的数据与“单价”列中数据的乘积得出,如图8.25所示。图8.25根据公式计算出的数据信息从上面的示例中可以看出,若想计算出相关的数据信息,必须每一行都输入一个固定的计算公式。按照这样的写法,那么如果数据表中有上百条数据,就需要有上百个计算公式,这样显然是不符合实际应用的。使用可变的公式就可以解决这一问题。示例8-14根据可变的公式输入数据(\代码\第8章\8.2.1(3).xlsm)本示例实现的效果与示例8-13中实现的效果相同,只不过计算数据是通过使用可变的公式来实现的。示例实现的操作步骤如下所示。(1)打开Excel,新建一个Excel工作簿,在工作表"Sheet1"中输入如图8.26所示的数据信息。图8.26向单元格中输入常量数据(2)在VBE环境当中双击"ThisWorkbook"对象,进入到工作簿对象的代码窗口当中。(3)在代码窗口中的“对象”列表框中选择"Workbook"对象,在“过程”列表框中选择"Open"事件,然后在"Workbook"对象的"Open"事件中添加如下的程序代码。01PrivateSubWorkbook_Open()02DimiAsInteger03'计算库存数量的变量04Dimval1AsString05Dimval2AsString06'计算金额的变量07Dimval3AsString08Dimval4AsString09Fori=4ToRange("A65536").End(xlUp).Row10'计算库存数量11val1=Cells(i,4).Offset(0,-2).Address(0,0)12val2=Cells(i,4).Offset(0,-1).Address(0,0)13Cells(i,4)="="&val1&"+"&val214'计算金额15val3=Cells(i,7).Offset(0,-3).Address(0,0)16val4=Cells(i,7).Offset(0,-1).Address(0,0)17Cells(i,7)="="&val3&"*"&val418Nexti19EndSub在上述的第11行代码中,Cells(i,4).Offset(0,-2)表示的是将当前单元格向左移动2个单元格,而在第17行代码中,语句"="&val1&"+"&val2则表示一个可变的公式,通过该公式可以计算出相应的数据信息。(4)关闭工作簿。再重新打开工作簿时,工作表中的“库存数量”列中的数据将会由“进货数量”列中的数据与“剩余数量”列中的数据的和得出;而“金额”列中的数据将会由“库存数量”列中的数据与“单价”列中的数据的乘积得出,如图8.27所示。图8.27通过可变的公式向单元格中输入的数据信息8.2.2清除单元格中的信息Excel工作表中的单元格信息由单元格内容、单元格格式和单元格批注3部分组成。如果单元格中的数据信息不再需要,可以将其清除。清除单元格中的数据信息分为清除单元格格式、清除单元格内容、清除单元格批注和清除单元格全部4种情况,下面通过示例分别讲解这几种清除单元格信息的方法。示例8-15清除单元格中的数据信息(\代码\第8章\8.2.2.xlsm)本示例实现的是在单击工作表中的【清除格式】按钮之后,将清除工作表中指定单元格的格式;在单击【清除内容】按钮之后,将清除工作表中指定单元格的内容;在单击【清除批注】按钮之后,将清除工作表中指定单元格的批注;在单击【清除全部】按钮之后,将清除工作表中指定单元格的全部信息。示例实现的操作步骤如下所示。(1)新建一个Excel工作簿,进入到VBE开发环境当中。(2)在VBE环境当中添加一个模块。(3)在模块的代码窗口中添加如下的程序代码。01'清除单元格的格式02Sub清除格式()03Range("C4:C9").ClearFormats04EndSub05'清除单元格的内容06Sub清除内容()07Range("D4:D9").ClearContents08Range("G4:G9").ClearContents09EndSub10'清除单元格的批注11Sub清除批注()12Range("B5").ClearComments13EndSub14'清除单元格的所有信息15Sub清除所有()16Range("E4:E9").Clear17EndSub代码中使用单元格对象的ClearFormats方法(第3行代码)实现清除单元格格式的功能;使用单元格对象的ClearContents方法(第7~8行代码)清除单元格内容的功能;使用单元格对象的ClearComments方法(第12行代码)清除单元格批注的功能;使用单元格对象的Clear方法(第16行代码)清除单元格全部信息的功能。(4)在工作表"Sheet1"中添加4个按钮控件,在“按钮1”弹出的“指定宏”窗口中选择宏“清除格式”,将按钮的显示名称修改为“清除格式”;在“按钮2”弹出的“指定宏”窗口中选择宏“清除内容”,将按钮的显示名称修改为“清除内容”;在“按钮3”弹出的“指定宏”窗口中选择宏“清除批注”,将按钮的显示名称修改为“清除批注”;在“按钮4”弹出的“指定宏”窗口中选择宏“清除全部”,将按钮的显示名称修改为“清除全部”。(5)在工作表中输入如图8.28所示的数据信息,并且对单元格B5设置批注信息,分别对C4:C10单元格、D4:D10单元格、E4:E10单元格设置格式信息。说明在Excel中设置单元格批注的方法是,首先选中要设置批注的单元格,在该单元格上单击鼠标右键,在弹出的快捷菜单中选择“插入批注”子菜单项,然后在弹出的标签中输入批注信息即可。设置完批注后,将鼠标放置在设置批注的单元格上,即会显示所设置的批注信息,如图8.28所示。图8.28添加完按钮和数据信息的工作表(6)将鼠标离开按钮控件,单击【清除格式】按钮,工作表中C4:C10单元格中的格式信息将被清除,如图8.29所示。图8.29清除单元格的格式注意单元格中只是格式信息被清除,单元格内容和其他信息还存在。(7)单击【清除内容】按钮,工作表中D4:D10单元格中的内容和G4:G10单元格中的内容将被清除,如图8.30所示。注意单元格中只是内容信息被清除,单元格格式和其他信息还存在。图8.30清除单元格中的内容(8)单击【清除批注】按钮,工作表中B5单元格中的批注信息将被清除,如图8.31所示。图8.31清除单元格中的批注信息(9)单击【清除全部】按钮,工作表中E4:E9单元格中的信息(包括内容和格式等信息)全部被清除,如图8.32所示。图8.32清除单元格中的全部信息8.3单元格的插入与删除当工作表中的行或单元格不能满足实际需要时,可以根据需要插入新的行或单元格。相反,如果有的行或单元格不再需要,可以将其删除。本节将详细讲解有关插入与删除单元格方面的知识。8.3.1插入单元格在ExcelVBA中,插入单元格或插入行列对象使用的是Insert方法。下面将分别介绍如何使用Insert方法向工作表中插入行、列和单元格。1.在工作表中插入一个或多个空行下面通过一个示例来讲解如何通过在工作表中插入一个或多个空行。示例8-16向工作表中插入空行(\代码\第8章\8.3.1(1).xlsm)本示例实现的是在单击工作表中的【插入单行】按钮之后,将在工作表中的第6行单元格之前插入一个空行单元格;如果单击【插入多行】按钮,则将在工作表中的第6行单元格之前插入4个空行单元格。示例实现的操作步骤如下所示。(1)新建一个Excel工作簿,并且在VBE开发环境中添加一个模块。(2)在模块的代码窗口中添加如下的程序代码。01'插入单个空行02Sub插入单行()03Rows(6).Insert04EndSub05'插入多个空行06Sub插入多行()07Rows("6:9").Insert08EndSub在上述的第3行代码中,Rows(6).Insert语句表示在指定的第6行单元格前插入一个空行单元格;在第7行代码中的Rows("6:9").Insert语句则表示在指定的第6行单元格前,插入从第6行到第9行共4个空行单元格。(3)在工作表"Sheet1"中添加2个按钮控件,在“按钮1”弹出的“指定宏”窗口中选择宏“插入单行”,将按钮的显示名称修改为“插入单行”;在“按钮2”弹出的“指定宏”窗口中选择宏“插入多行”,将按钮的显示名称修改为“插入多行”。(4)在工作表中输入如图8.33所示的数据信息。图8.33插入空行单元格之前的工作表(5)单击工作表中的【插入单行】按钮,在工作表中的第6行单元格前将插入一个空行单元格,如图8.34所示。图8.34插入单个空行单元格(6)删除插入的空行。然后单击工作表中的【插入多行】按钮,则在工作表中的第6行前将插入4个空白行单元格,如图8.35所示。图8.35插入多个空白行单元格2.在工作表中插入一个或多个空列同样,使用Insert方法也可以向工作表中插入一个或多个空白列单元格。示例8-17向工作表中插入空列(\代码\第8章\8.3.1(2).xlsm)本示例实现的是在单击工作表中的【插入单列】按钮之后,将在工作表中的第2列单元格之后插入一个空列单元格;如果单击【插入多列】按钮,则将在工作表中的第2列单元格之后插入2个空列单元格。示例实现的操作步骤如下所示。(1)新建一个Excel工作簿,进入到VBE开发环境当中。(2)在VBE环境当中添加一个模块,双击模块进入到模块的代码窗口当中。(3)在模块的代码窗口中添加如下的程序代码。'插入单个空列Sub插入单列()Columns(3).InsertEndSub'插入多个空列Sub插入多列()Columns("C:D").InsertEndSub(4)在工作表"Sheet1"中添加2个按钮控件,在“按钮1”弹出的“指定宏”窗口中选择宏“插入单列”,将按钮的显示名称修改为“插入单列”;在“按钮2”弹出的“指定宏”窗口中选择宏“插入多列”,将按钮的显示名称修改为“插入多列”。(5)在工作表中输入如图8.36所示的数据信息。图8.36插入空列单元格之前的工作表(6)单击工作表中的【插入单列】按钮,则在工作表中的第2列单元格后插入一个空列单元格,如图8.37所示。图8.37插入单个空列单元格(7)单击【插入多列】按钮,则在工作表中的第2列单元格后插入2个空白列单元格,如图8.38所示。图8.38插入多个空白列单元格3.在工作表中插入单元格除了在指定的位置可以插入空白行和空白列单元格之外,还可以在指定的位置插入空白的单元格。示例8-18在工作表中插入单元格(\代码\第8章\8.3.1(3).xlsm)本示例实现的是在单击工作表中的【插入单元格】按钮之后,首先弹出一个输入对话框,在该输入对话框中输入单元格的大小区域之后,单击【确定】按钮,将在工作表中插入指定区域的单元格。示例实现的操作步骤如下所示。(1)新建一个Excel工作簿,并且在其VBE开发环境当中添加一个模块。(2)在模块的代码窗口中添加如下的程序代码。'插入单元格Sub插入单元格()Dimcellsvaluecellsvalue=InputBox("请深入插入单元格的区域大小","信息提示")Range(cellsvalue).Insertshift:=xlDownEndSub(3)在工作表中添加一个按钮控件,然后在其弹出的“指定宏”窗口中选择宏“插入单元格”,将按钮的显示名称修改为“插入单元格”。(4)在工作表中输入如图8.39所示的数据信息,单击【插入单元格】按钮,在弹出的输入对话框窗口中输入插入单元格的区域"B5:C7"。图8.39确定输入单元格的区域和位置(5)在如图8.39所示的输入对话框中单击【确定】按钮,则在工作表中的B5:C7指定区域插入空白的单元格,如图8.40所示。图8.40插入的空白单元格8.3.2删除单元格如果工作表中的单元格不再需要,可以将其删除。在ExcelVBA中,使用单元格对象的Delete方法删除单元格。通常情况下,删除单元格主要分为以下几种情况。❑删除后单元格左移:是指在删除指定的单元格后,其右侧的单元格左移。❑删除后单元格上移:是指在删除指定的单元格后,其下方的单元格上移。❑删除整行:将单元格所在的行删除。❑删除整列:将单元格所在的列删除。下面通过一个具体的示例来进行讲解这几种删除单元格的方法。示例8-19删除单元格(\代码\第8章\8.3.2.xlsm)本示例实现的是在单击工作表当中的【删除后单元格左移】按钮之后,被指定删除单元格右侧的单元格依次向左移动一个单元格;在单击工作表当中的【删除后单元格上移】按钮之后,被指定删除单元格下面的单元格将依次向上移动一个单元格;在单击工作表当中的【删除整行】按钮之后,则指定单元格所在的行将被删除;在单击工作表当中的【删除整列】按钮之后,则指定单元格所在的列将被删除。示例实现的具体步骤如下所示。(1)新建一个Excel工作簿,并且在其VBE开发环境当中添加一个模块。(2)在模块的代码窗口中分别添加如下的程序代码。01'删除单元格后将其右侧单元格左移02Sub删除后左移()03Range("A5").DeleteShift:=xlToLeft04EndSub05'删除单元格后将其下面单元格上移06Sub删除后上移()07Range("D3").DeleteShift:=xlUp08EndSub09'删除整行单元格10Sub删除整行()11Range("C5").EntireRow.Delete12EndSub13'删除整列单元格14Sub删除整列()15Range("B3").EntireColumn.Delete16EndSub在上述的第3行与第7行代码中,Shift是Delete的自变量,当自变量Shift为xlToLeft时,则删除单元格后右侧的单元格左移;当自变量Shift为xlUp时,则删除单元格后下方的单元格上移。在第11行代码中,在使用单元格对象的EntireRow属性时,则删除单元格所在行的数据信息。在第15行代码中,在使用单元格对象的EntireColumn属性时,则删除单元格所在列的数据信息。(3)在工作表中添加4个按钮控件,在“按钮1”弹出的“指定宏”窗口中选择宏“删除后左移”,将按钮的显示名称修改为“删除后单元格左移”;在“按钮2”弹出的“指定宏”窗口中选择宏“删除后上移”,将按钮的显示名称修改为“删除后单元格上移”;在“按钮3”弹出的“指定宏”窗口中选择宏“删除整行”,将按钮的显示名称修改为“删除整行”;在“按钮4”弹出的“指定宏”窗口中选择宏“删除整列”,将按钮的显示名称修改为“删除整列”。(4)在工作表中输入如图8.41所示的数据信息。图8.41按照各种方式删除单元格之前的工作表(5)在工作表中单击【删除后单元格左移】按钮,则单元格A5被删除,并且A5右侧所有的单元格依次向左移动一个单元格,如图8.42所示。图8.42删除后单元格左移(6)在工作表中单击【删除后单元格上移】按钮,则单元格D3被删除,并且D3单元格下面所有的单元格依次向上移动一个单元格,如图8.43所示。图8.43删除后单元格上移(7)在工作表中单击【删除整行】按钮,则单元格C5所在的行被删除,如图8.44所示。图8.44删除单元格所在的行(8)在工作表中单击【删除整列】按钮,则单元格B3所在的列被删除,如图8.45所示。图8.45删除单元格所在的列8.4单元格的隐藏Excel中的单元格所在的行不仅可以被删除,还可以被隐藏。同样,在ExcelVBA中,也可以实现对单元格所在的行和列进行隐藏和取消隐藏的操作。8.4.1隐藏整行和整列单元格本节中将通过示例来讲解在ExcelVBA中如何实现隐藏与取消隐藏整行和整列单元格。示例8-20隐藏整行和整列单元格(\代码\第8章\8.4.1.xlsm)本示例实现的是当单击工作表中的【隐藏整行】按钮之后,将隐藏工作表"Sheet1"中第4行到第6行的单元格数据;当单击【隐藏整列】按钮之后,将隐藏工作表"Sheet1"中A列和B列中的单元格数据。示例实现的具体步骤如下所示。(1)新建一个Excel工作簿,进入到VBE开发环境当中。(2)在VBE环境中添加一个模块,并在模块的代码窗口中添加如下的程序代码。'隐藏整行单元格Sub隐藏整行()Rows("4:6").Hidden=TrueEndSub'取消整行隐藏单元格Sub取消整行隐藏()Rows("4:6").Hidden=FalseEndSub'隐藏整列单元格Sub隐藏整列()Columns("A:B").Hidden=TrueEndSub'取消隐藏整列单元格Sub取消整列隐藏()Columns("A:B").Hidden=FalseEndSub(3)在工作表中分别添加4个按钮控件,在“按钮1”弹出的“指定宏”窗口中选择宏“隐藏整行”,将按钮的显示名称修改为“隐藏整行”;在“按钮2”弹出的“指定宏”窗口中选择宏“取消整行隐藏”,将按钮的显示名称修改为“取消行隐藏”;在“按钮3”弹出的“指定宏”窗口中选择宏“隐藏整列”,将按钮的显示名称修改为“隐藏整列”;在“按钮4”弹出的“指定宏”窗口中选择宏“取消列隐藏”,将按钮的显示名称修改为“取消列隐藏”,单击【确定】按钮。(4)在工作表中输入如图8.46所示的数据信息。图8.46输入数据信息后的工作表(5)单击工作表中的【隐藏整行】按钮,将隐藏工作表中第4行至第6行的单元格,如图8.47所示。图8.47整行隐藏单元格(6)单击工作表中的【取消行隐藏】按钮,将取消对第4行至第6行的单元格的隐藏,恢复到如图8.46所示的状态。(7)单击工作表中的【隐藏整列】按钮,将隐藏工作表中A列和B列的单元格,如图8.48所示。图8.48整列隐藏单元格(8)单击工作表中的【取消列隐藏】按钮,将取消对A列和B列单元格的隐藏,恢复到如图8.46所示的状态。8.4.2隐藏单元格所在的行和列在Excel中,无法实现对单个单元格的隐藏,只能够对单元格所在的行或列进行隐藏。本节将通过示例来讲解如何隐藏单元格所在的行和列。示例8-21隐藏单元格所在的行和列(\代码\第8章\8.4.2.xlsm)在本示例中,单击工作表中的【隐藏指定行】按钮,将弹出一个输入对话框窗口,在该窗口中输入一个单元格的地址之后,单击【确定】按钮,将隐藏指定单元格所在的行。如果单击工作表中的【隐藏指定列】按钮,将弹出一个输入对话框窗口,在该窗口中输入一个单元格的地址之后,单击【确定】按钮,将隐藏指定单元格所在的列。示例实现的具体步骤如下所示。(1)新建一个Excel工作簿。(2)在VBE环境中添加一个模块。(3)在模块的代码窗口中添加如下的程序代码。'隐藏指定单元格所在的行Sub隐藏指定行()DimHidrowsHidrows=InputBox("请输入单元格的地址","提示信息")Range(Hidrows).EntireRow.Hidden=TrueEndSub'取消隐藏指定单元格所在的行Sub取消隐藏指定行()DimHidrowsHidrows=InputBox("请输入单元格的地址","提示信息")Range(Hidrows).EntireRow.Hidden=FalseEndSub'隐藏指定单元格所在的列Sub隐藏指定列()DimHidcolumnsHidcolumns=InputBox("请输入单元格的地址","提示信息")Range(Hidcolumns).EntireColumn.Hidden=TrueEndSub'取消隐藏指定单元格所在的列Sub取消隐藏指定列()DimHidcolumnsHidcolumns=InputBox("请输入单元格的地址","提示信息")Range(Hidcolumns).EntireColumn.Hidden=FalseEndSub(4)在工作表中分别添加4个按钮控件,在“按钮1”弹出的“指定宏”窗口中选择宏“隐藏指定行”,将按钮的显示名称修改为“隐藏指定行”;在“按钮2”弹出的“指定宏”窗口中选择宏“取消隐藏指定行”,将按钮的显示名称修改为“取消隐藏指定行”;在“按钮3”弹出的“指定宏”窗口中选择宏“隐藏指定列”,将按钮的显示名称修改为“隐藏指定列”;在“按钮4”弹出的“指定宏”窗口中选择宏“取消隐藏指定列”,将按钮的显示名称修改为“取消隐藏指定列”,单击【确定】按钮。(5)在工作表"Sheet1"中输入如图8.49所示的数据信息,并且将添加的按钮控件摆放到相应的位置。图8.49输入数据信息后的工作表(6)单击工作表中的【隐藏指定行】按钮,将弹出一个输入对话框,如图8.50所示。在该输入对话框中输入单元格地址D5,单击【确定】按钮之后,单元格D5所在的行(第5行)被隐藏,如图8.51所示。图8.50输入隐藏行的单元格地址图8.51隐藏指定行(7)单击工作表中的【取消隐藏指定行】按钮,并且在弹出的输入对话框中输入单元格地址D5,单击【确定】按钮之后,单元格D5所在的行(第5行)被取消隐藏。(8)单击工作表中的【隐藏指定列】按钮,将弹出一个输入对话框,如图8.52所示。在该输入对话框中输入单元格地址G7,单击【确定】按钮之后,单元格G7所在的列(第G行)被隐藏,如图8.53所示。图8.52输入隐藏列的单元格地址图8.53隐藏指定列(9)单击工作表中的【取消隐藏指定列】按钮,并且在弹出的输入对话框中输入单元格地址G7,单击【确定】按钮之后,单元格G7所在的列(第G行)将被取消隐藏。8.5单元格的查找如果要从工作表中的大量信息中寻找某一具体的数据信息,通常需要用到单元格的查找功能。本节将详细讲解在ExcelVBA中如何实现查找单元格的功能。8.5.1使用工作表函数进行查找在ExcelVBA中,使用工作表函数可以查找单元格。Excel中用于查找单元格的工作表函数主要有以下两种。❑Macth函数:用于查找单元格的位置。❑Vlookup函数:用于查找并返回单元格的内容。下面通过一个示例来讲解如何使用这两个函数来查找单元格。示例8-22使用工作表函数查找单元格(\代码\第8章\8.5.1.xlsm)本示例实现的是当单击工作表中的【查找位置】按钮之后,将弹出一个输入对话框,在该输入对话框中输入单元格的地址信息之后,将弹出一个提示对话框,显示查找单元格所在的行数。当单击【查找位置】按钮时,在随后弹出的输入对话框中输入要查找“货物名称”单元格所在的地址,然后单击【确定】按钮,此时将弹出一个提示对话框,在该对话框中将显示所查找货物名称所对应的剩余数量信息。示例实现的具体步骤如下所示。(1)新建一个Excel工作簿,进入到VBE开发环境当中。(2)在VBE环境中添加一个模块,并在模块的代码窗口中添加如下的程序代码。'按照位置进行查找Sub查找位置()Dimsearchssearchs=InputBox("请输入要查找的货物名称!","信息提示")DimSearchValuesSearchValues=Application.Match(Range(searchs),Range("A:A"),0)MsgBox"查找的结果在"&SearchValues&"行",vbSystemModal,"查找结果"EndSub'按照内容进行查找Sub查找内容()Dimsearchssearchs=InputBox("请输入要查找的库存数量!","信息提示")DimSearchValuesSearchValues=Application.VLookup(Range(searchs),Range("A:C"),3,0)MsgBox"所查货物的剩余数量为"&SearchValues,vbSystemModal,"查找结果"EndSub(3)在工作表中分别添加2个按钮控件,在“按钮1”弹出的“指定宏”窗口中选择宏“查找位置”,将按钮的显示名称修改为“查找位置”;在“按钮2”弹出的“指定宏”窗口中选择宏“查找内容”,将按钮的显示名称修改为“查找内容”,单击【确定】按钮。(4)在工作表中输入如图8.54所示的数据内容。图8.54工作表中的数据内容(5)单击工作表中的【查找位置】按钮,在弹出的输入对话框中输入要查找单元格的地址A6,然后单击【确定】按钮,将弹出一个提示查找单元格所在行数的提示对话框窗口,如图8.55所示。图8.55查找单元格所在的位置(6)单击工作表中的【查找内容】按钮,在弹出的输入对话框中输入要查找“货物名称”所在列的单元格地址,单击【确定】按钮,此时将弹出一个提示对话框,在该对话框中将显示查找货物名称所对应的剩余数量信息,如图8.56所示。图8.56查找单元格的内容8.5.2使用Find方法查找单元格在ExcelVBA当中,普遍使用的是使用Find方法来查找单元格。Find方法的结构如下所示。单元格地址范围.Find(查找内容,查找的开始位置,查找的范围,单元格匹配,查找的方式,查找的类别,是否区分大小写,是否区分全/半角)上述代码中的各项参数如下所示。❑查找内容:是指查找数据的内容。❑查找的开始位置:查找的开始位置。默认为当前活动单元格位置,如果未指定,则从指定区域左上角开始查找。❑查找的范围:通常指的是查找公式、值或者备注。可为xlFormulas(公式)、xlValues(值)、xlComments(备注)和xlFindlookln常量之一。❑单元格匹配:是指查找单元格的部分内容还是全部内容。可为xlPar(部分内容)、xlWhole(内容匹配)和XlLookAt常量之一。❑查找的方式:指的是按行搜索还是按列搜索。可为xlByColumns(按列)或xlByRows(按行)X1SearchOrder常量之一。❑查找的类别:可为xlNext或xlPreviousX1SearchDirection常量之一。XlPrevious是指查找前一个单元格。❑是否区分大小写:查找时是否区分大小写。❑是否区分全/半角:是指按照全角或半角的方式进行查找。下面通过一个示例进行讲解。示例8-23使用Find方法查找单元格(\代码\第8章\8.5.2.xlsm)本示例实现的是使用Find方法根据输入单元格的地址来确定查找单元格所在的行数。示例实现的具体步骤如下所示。(1)新建一个Excel工作簿,进入到其VBE开发环境当中。(2)在VBE环境中添加一个模块。(3)在模块的代码窗口中添加如下的程序代码。'使用Find方法进行查找Sub查找()Dimsearchssearchs=InputBox("请输入要查找的货物名称!","信息提示")DimSearchValuesSearchValues=Range("A:G").Find(Range(searchs)).RowMsgBox"查找的结果在"&SearchValues&"行",vbSystemModal,"查找结果"EndSub(4)在工作表中添加一个按钮控件,在弹出的“指定宏”窗口中选择宏“查找”,并且将按钮的显示名称修改为“查找”,单击【确定】按钮。(5)在工作表"Sheet1"中输入如图8.57所示的数据信息,并且将添加的按钮控件摆放到相应的位置。图8.57在工作表中输入的数据信息(6)单击工作表中的【查找】按钮,然后在弹出的输入对话框中输入要查找的单元格的地址B6,单击【确定】按钮,此时将弹出一个提示对话框,在该对话框中将显示所查找单元格所在的行数信息,如图8.58所示。图8.58使用Find方法查找单元格信息8.6单元格的处理本节将讲解有关Excel单元格的两种常用的操作,即在ExcelVBA中,如何实现合并与拆分单元格和如何组合与取消组合单元格。8.6.1合并与拆分单元格在Excel的工作表当中,通过手动单击【合并与拆分】按钮可以实现对指定区域内单元格的合并与拆分的功能,具体实现的方法如下所示。(1)打开Excel,在工作表中选取要合并单元格的区域。(2)在合并的单元格区域中单击鼠标右键,将弹出一个工具栏及快捷菜单的窗口,如图8.59所示。图8.59合并选取区域的单元格(3)在如图8.59所示的单元格中单击【合并与拆分】按钮,即可将选定的单元格区域合并,如图8.60所示。图8.60合并后的单元格(4)如果想拆分合并的单元格,则首先选中被合并的单元格,然后在该单元格上单击鼠标右键,此时将弹出一个工具栏及快捷菜单的窗口,如图8.61所示。图8.61拆分选取的单元格(5)在如图8.61所示的单元格中单击【合并与拆分】按钮,即可拆分选定的单元格,如图8.62所示。图8.62拆分后的单元格在ExcelVBA中,使用单元格对象的Merge方法可以实现合并单元格的操作;使用单元格对象的UnMerge方法可以实现拆分单元格的操作。下面通过示例进行详细地讲解。示例8-24合并与拆分单元格(\代码\第8章\8.6.1.xlsm)本示例实现的是在工作表中单击【合并单元格】按钮之后,将弹出输入对话框,在对话框中输入要合并单元格区域的地址之后,单击【确定】按钮,将指定的单元格区域合并为一个单元格;在选中该合并的单元格之后,单击工作表中的【拆分单元格】按钮,也将会弹出输入对话框,在对话框中输入要拆分单元格区域的地址之后,单击【确定】按钮,将合并的单元格进行拆分,恢复到原来未合并单元格时的状态。示例实现的操作步骤如下所示。(1)新建一个Excel工作簿,进入到VBE开发环境当中。(2)在VBE环境当中添加一个模块,双击模块进入到模块的代码窗口当中。(3)在模块的代码窗口中分别添加如下的程序代码。01Sub合并单元格()02OnErrorResumeNext03DimstartsAsString04DimendsAsString05starts=InputBox("请输入合并单元格区域的起始单元格地址","提示信息")06ends=InputBox("请输入合并单元格区域的终止单元格地址","提示信息")07'首先选取单元格08Range(starts,ends).Select09'合并单元格10Range(starts,ends).Merge11EndSub12Sub差分单元格()13OnErrorResumeNext14DimstartsAsString15DimendsAsString16starts=InputBox("请输入拆分单元格区域的起始单元格地址","提示信息")17ends=InputBox("请输入拆分单元格区域的终止单元格地址","提示信息")18'首先选取单元格19Range(starts,ends).Select20'拆分单元格21Range(starts,ends).UnMerge22EndSub在上述的第10行代码中,使用Range对象的Merge方法合并选取指定的单元格区域;在第21行代码中,使用Range对象的UnMerge方法拆分合并的单元格区域。(4)在工作表"Sheet1"中添加2个按钮控件,在“按钮1”弹出的“指定宏”窗口中选择宏“合并单元格”,将按钮的显示名称修改为“合并单元格”;在“按钮2”弹出的“指定宏”窗口中选择宏“拆分单元格”,将按钮的显示名称修改为“拆分单元格”。(5)将鼠标离开按钮控件,单击【合并单元格】按钮,在弹出的输入对话框中输入要合并单元格区域的起始地址D3,如图8.63所示。图8.63输入合并单元格区域的起始地址(6)在图8.63所示的输入对话框中单击【确定】按钮之后,将再次弹出一个要求输入合并单元格区域的对话框,在该对话框中输入终止单元格的地址G9,如图8.64所示。图8.64输入合并单元格区域的终止地址(7)在如图8.64所示的输入对话框窗口中单击【确定】按钮,则工作表中D3:G9单元格区域被合并为一个单元格,如图8.65所示。图8.65被合并后的单元格(8)在工作表中单击【拆分单元格】按钮之后,在弹出的输入对话框中分别输入要拆分单元格区域的起始地址D3和终止地址G9,在输入对话框中单击【确定】按钮之后,指定的单元格区域将被拆分,如图8.66所示。图8.66拆分后的单元格8.6.2组合与取消组合单元格在ExcelVBA当中,使用单元格对象的Group方法可以实现组合单元格的操作;使用单元格对象的UnGroup方法可以实现取消组合单元格的操作。下面通过一个示例进行详细地讲解。示例8-25组合与取消组合单元格(\代码\第8章\8.6.2.xlsm)本示例实现的是在工作表中单击【组合单元格】按钮,会将工作表中的C列和D列单元格进行组合。如果单击【取消组合单元格】按钮,将取消对C列和D列单元格的组合。示例实现的操作步骤如下所示。(1)新建一个Excel工作簿,在工作表"Sheet1"中添加示例所需要的数据信息。(2)进入到VBE环境当中。在VBE环境当中添加一个模块,双击模块进入到模块的代码窗口当中。(3)在模块的代码窗口中添加如下的程序代码。01Sub组合单元格()02OnErrorResumeNext03'首先选取单元格04Range("C2","D2").Select05'组合单元格06Range("C2","D2").Group07EndSub08Sub取消组合单元格()09OnErrorResumeNext10'首先选取单元格11Range("C2","D2").Select12'取消组合单元格13Range("C2","D2").Ungroup14EndSub在上述的第6行代码中,使用"Range"对象的"Group"方法组合指定的单元格;在第13行代码中,使用"Range"对象的"Ungroup"方法取消组合指定的单元格。(4)在工作表"Sheet1"中添加2个按钮控件,在“按钮1”弹出的“指定宏”窗口中选择宏“组合单元格”,将按钮的显示名称修改为“组合单元格”;在“按钮2”弹出的“指定宏”窗口中选择宏“取消组合单元格”,将按钮的显示名称修改为“取消组合单元格”。(5)将鼠标离开按钮控件,单击【组合单元格】按钮,工作表中的C列和D列单元格将被组合,如图8.67所示。图8.67组合C列与D列单元格在如图8.67所示的工作表界面中,单击单元格组合控制区域中的“-”或“1”,可使组合的单元格折叠起来显示。折叠后的工作表界面如图8.68所示。组合的单元格在折叠以后,如果想展开,可以通过单击单元格组合控制区域中的“+”或“2”来实现,如图8.68所示。图8.68折叠起来的单元格(6)当组合的单元格区域处于展开显示的状态时(图8.67所示的状态),单击工作表中的【取消组合单元格】按钮,将取消对C列和D列单元格的组合,如图8.69所示。图8.69取消组合后的工作表界面8.7单元格的应用前面讲解了与单元格相关的一些知识。为了使读者更深一步地学习控制单元格的相关操作,更好地巩固前面所学习的知识。本节将在向读者介绍有关单元格操作的几个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论