还剩17页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
EXCEL宏的使用
一、选中单个单元格Range<单元格地址>a.Select例Range WO.Select,选中例9”单元格
二、选中多个单元格Range〈单元格地址>:<单元格地址〉[,<单元格地址》]”.Select例Range A1:B
2.Select选中“Al”、“A2”、“Bl、例2”四个连续的单元格Range^12:
12.Select选中第12行RangeB:B.Select选中第B列Range Al:A2,B7,2:
2.Select选中“Al”、“A2”、“B7”五个不连续的单元格和第二行Cells.Select选中当前SHEET中的所有单元格Rows〃〈行地址〉<行地址>〃.Select选中整行Columns〃〈列地址》:<列地址>〃.Select选中整列例Rows“2:2”.Select选中第2行Rows“2:
5.Select选中2到5行Columns〃A:A〃.Select,选中A列Columns〃E:B〃.Select选中E到B列
三、设置活动单元格Range〃〈单元格地址>〃.Activate注设置活动单元格与选中单元格类似,不同之处就是后者在选中指定的单元格之前会将在此前已被选中的单元格取消掉前者在设置之前不会取消已选中的单元格,如果此时操作的单元格不是被选中的单元格,这时他实现的功能与选一个单元格相同
四、给活动的单元格赋值ActiveCell.FormulaRlCl=<值>例Range〃A1〃.SelectActiveCel
1.FormulaRlCl=NameRangeSelectEnd Sub程序执行结果如图所示实际上任何文本编辑软件都可以编写宏代码,只是必须将所编写的宏代码粘贴到Rxcel97的宏模块中才能运行以上两种建立宏的方法各有优劣,使用宏记录器建立宏简单、方便,所见即所得,可以省略输入宏代码的过程,基本不用了解宏语言的语法和结构,但不够灵活,不够简捷,所以,运用范围受到限制;使用编辑器建立宏则对用户层次要求较高,要求用户能够熟练使用宏语言Visual BasicforApplication,运用这种方法建立宏不仅可以处理复杂的运算过程,同时可以极大地发挥Excel97的各项功能因此,在实际应用中,应将两种方式结合运用,发挥其各自的长处,才能做到事半功倍
二、优化宏宏建立以后需要经过调试和优化方可运用宏的调试主要是找出语法上的缺陷,在建立宏的同时可以一并完成,而优化则需要相当长的过程,甚至在程序已经投入使用后还需要不断优化宏的优化大致可从以下儿个方面着手㈠消除冗余,提高宏代码的运行效率消除冗余是所有程序开发人员应该遵循的一般准则针对Excel97应用而言,建立宏应充分运用Excel97本身强大的数据处理功能,将某些数据计算的工作交给工作表或单元格去完成,这样可以在很大程度上减少宏代码的数量,缩短程序的开发周期另外,在处理相同任务的时候,Excel97本身的公式或函数的计算速度也远远高于宏代码的执行速度,这一点在用户所开发的程序很大或计算机的运算速度较低时尤为明显㈡最大限度地提高宏代码的执行速度Excel97本身没有提高宏代码执行速度的命令,根据笔者的实践体会,要提高宏代码的执行速度大致可从三个方面考虑
1.消除屏幕闪烁现象在宏的执行过程中,特别是宏在不同工作簿或工作表之间反复调用数据的时候,会出现屏幕闪烁的现象如上例打印通讯录”宏在“通讯录.dbf”和“打印通讯录.xls”之间来回切换,屏幕的闪烁大大影响了宏代码的执行速度在编写宏代码的时候,加入关闭屏幕更新命令,可以有效地防止屏幕闪烁例如我们可将“打印通讯录”宏作如下修改Sub打印通讯录Application.ScreenUpdating=FalseApplication.ScreenUpdating=TrueEnd Sub这样将看不到宏的执行过程,但宏的执行速度加快了值得注意的是Excel97对屏幕更新的默认值是True,所以在宏执行结束时需要恢复屏幕更新的默认设置另外,在同一工作表中的不同区域进行数据处理时也会出现屏幕闪烁现象,这时只需从窗口菜单中选择“冻结拆分窗口”,通过调整行高和列宽将拆分窗口大小调整为计算机屏幕大小后,在执行宏的过程中即可消除屏幕闪烁现象
2.尽量少占用计算机内存首先,在程序中应少使用剪贴板,因为在剪贴板上放置数据会大量占用计算机的内存,从而降低机器的性能,影响代码的执行速度第二,在编写宏代码时应养成事先声明变量的习惯因为,在程序中使用变量而不事先声明,Excel97会默认变量类型为Variant,Variant是一种特殊的数据类型,除了定长String数据及用户定义类型外,可以包含任何种类的数据,但是它所占用的内存空间也远远高于其他数据类型如在“打印通讯录”宏中声明变量的语句为Dim Value,nol,no2,页数As IntegerDimsss,sssl,sss2,sss3As String以上两个语句共声明八个变量,较之不声明变量节省内存空间104个字节,在程序较小、使用变量较少时,这种方法对执行速度的影响并不明显,但若程序很大、使用变量很多、计算机的运算速度较低时,使用这种方法对提高程序的执行速度则是非常有效的第三,在程序中要谨慎运用数组为了尽可能使代码简洁明了,应将声明的数组指定为某一种数据类型数组变量的最大值,是以操作系统与有多少可用内存为基础的,若使用的数组大小超过了系统中可用内存总数,则必须从磁盘中来回读写数据,从而使宏的运行速度变得很慢第四,对使用Load语句调入内存的VBA对象,当确定在后面的程序中已不再使用时,应及时使用Unload语句将这个对象从内存中删除,以释放内存空间3,简化VBA语句的结构由于任何一个属性、方法或层次对象的引用都需要Excel97花费一定的时间来处理,因此在对属性、方法或层次对象的引用要力求简化例如可以将“打开数据库”宏的语句改写为Application.Workbooks.Open FileName:二〃通讯录.dbf〃虽然这种写法同样可以运行,但与原来写法比较增加了VBA对象的引用层次,从而增加了程序的处理时间,从理论上来说降低了程序的执行速度㈢将宏的执行动作模块化VBA面向对象编程的特点使宏的模块化变得尤为方便所谓模块化就是将宏分解为若干互相独立的宏子程序,每个子程序只包含一个或几个完整的执行动作由于Excel97的宏可以互相嵌套,在一个宏中调用其他的宏子程序只需在宏中嵌入宏子程序的名字即可,因此,可以将一些较小的宏连在一起创建一个较大的宏,以完成相对复杂的任务在宏的嵌套中必须注意一定要明确指定各个宏子程序的作用范围,即必须说明宏子程序作用的工作簿的工作表或工作表中的数据区域,否则将会出现数据紊乱导致臆想不到的后果将宏的执行动作模块化具有很多优点,第一,便于宏代码的编写、调试、修改和维护;第二,程序完成后并不是一成不变的,要求随着业务的变化而不断的完善和升级模块化增加了程序代码的可读性,便于应用程序的完善和升级第三,完成性质相同任务的宏可以作为公共子程序被反复多次调用,从而降低冗余另外,有经验的程序开发人员往往积累一些带有共性的小工具,在开发新的应用程序时可以直接使用,进行拼装,既省时又省力,可提高程序的开发效率例如可以将“打印通讯录”宏中的打印过程独立出来,变成如下的宏子程序Sub打印ActiveWindow.SelectedSheets.Printout From:=l,To:=l,Copies:=l,Collate:二TrueEnd Sub宏子程序“打印”执行的动作是打印工作表的第一页,可以在任何执行相同动作的打印宏中予以调用
三、运行宏建立宏和优化宏两个步骤都是为运行宏所做的准备工作,使用宏的最终目的是要通过运行宏来实现的运行宏的方式一般分为以下四种㈠使用宏对话框运行宏使用宏对话框运行宏可分为三个步骤
1.从工具菜单的宏选项中选择“宏”弹出如图所示的宏对话框;
2.从宏名列表中选择需要运行的宏;3,用鼠标左键单击“执行”按钮这是运行宏最普通的方式,具有简单、直观、易于掌握的优点㈡通过自定义的快捷键运行宏宏的快捷键可以通过两种方式定义,一是在运用宏记录器建立宏时从录制宏对话框中定义;二是从上图所示宏对话中选择“选项”后定义快捷键定义后,运行宏的时候需要同时按下Ctrl和所定义的快捷键这是运行宏最直接的方式㈢通过载体运行宏所谓载体就是能够被指定宏的Excel97对象一般而言,可以充当载体的对象有工作簿、工作表、工具栏按钮、图表、图片、文本框、艺术字以及各项窗体控件
1.运用工作簿和工作表作为宏的载体工作簿和工作表作为宏的载体时,并不能直接为其指定宏,需要通过事件的触发来运行宏在此仅以工作表为例,如将宏“打印通讯录”指定给工作表“通讯录打印页面”,可以通过激活工作表事件来实现代码如下Private SubWorksheet_Activate()打印通讯录End Sub要运行“打印通讯录”宏只需激活工作表通讯录打印页面”即可这样的工作表事件共有七个,除了以上激活工作表事件外,还有:BeforeDoubleClick事件(双击工作表产生的事件);BeforeRightClick事件(鼠标右键单击工作表时产生的事件);Deactivate事件(工作表从活动状态转为非活动状态时产生的事件);Calculate事件(当数据源更新,图表重新绘制之后产生的事件);Change事件(当更改工作表中的单元格或外部链接引起单元格的值改变时产生的事件);Selectionchange事件(工作表上的选定区域发生改变时产生的事件)每个事件都有其特定的触发条件,这样就为宏的灵活运用提供了多种有效途径
2.运用自定义工具栏按钮作为宏的载体运用自定义工具栏按钮作为宏的载体,可通过以下步骤来实现1将鼠标指针指向任何显示的工具栏,单击右键,在出现的快捷菜单中选择“自定义”选项,弹出自定义窗口;2从自定义窗口中选择“命令”页面;3在命令页面的“类别”列表中选择“宏”,将“命令”列表中出现的自定义按钮拖曳到工具栏上;4用鼠标右键单击工具栏上的自定义按钮,从弹出的“指定宏”窗口列表中选择宏,最后单击“确定”按钮若要运行该宏单击工具栏上的自定义按钮即可
3.运用图表、图片、文本框、艺术字等绘图对象作为宏的载体建立绘图对象有两种方法,一是从Excel97插入菜单中插入图表、图片或艺术字,二是从视图菜单中打开绘图、图表、图片或艺术字工具栏,然后通过工具栏建立绘图对象将宏指定给绘图对象的操作过程如下:
①选中的绘图对象;
②用鼠标右键单击选中的绘图对象,从快捷菜单中选择“指定宏”选项;
③从弹出的“指定宏”窗口列表中选择宏后单击“确定”按钮从此,每当鼠标左键单击该对象时都会运行指定的宏
4.运用窗体控件作为宏的载体灵活地运用窗体控件是建立应用程序主控菜单的基础运用窗体控件作为宏的载体可通过两种途径
①从视图菜单中打开窗体工具栏,将可以使用的窗体控件拖曳到Excel97工作表上,然后重复为绘图对象指定宏的操作过程,通过上述操作,作为宏的载体的窗体控件将“浮”在Excel97工作表上,用鼠标单击该控件即可运行指定的宏
②通过Visual Basic编辑器建立自定义窗体,将自定义窗体控件作为宏的载体通讯录处理程序说明:打开数据库之前,因没有将要打的数据,故打印通讯录按钮不能应用;数据库打开后,打开数据库按钮将失去焦点,避免重复打开数据库例如建立如图所示名为“通讯录处理程序”的自定义窗体,然后通过“打开数据库”和“打印通讯录”按钮分别运行“打开数据库”和“打印通讯录”两个宏,具体操作步骤为第一步,进入Visual Basic编辑器;第二步,通过Visual Basic编辑器的插入菜单添加用户窗体;第三步,设置窗体属性,在本例中将窗体的Cption属性和(名称)属性都设置为“通讯录处理程序”;第四步,为窗体添加控件,同时设置控件属性,窗体控件的属性很多,Excel97为每个控件属性都定义了一个默认值,因此,用户不必对每一个属性都重新设置,只需设置用户认为需要更改的属性即可;第五步,通过控件的Click事件指定宏,如将宏“打印通讯录”指定给控件“打印通讯录”的代码如下Private Sub打印通讯录_Click()Run〃打印通讯录〃End Sub注意在用户自定窗体的类模块中不能直接调用Excel97宏,必须使用Rim方法,在使用Run方法调用宏的过程中,宏名应包括在括号和引号内Excel97所提供的通过载体运行宏的特性,使用户在开发管理程序的时候更加得心应手㈣自动运行的宏在Excel5中有四个自动执行的宏Auto Open、Auto Close、Auto Activate和Auto Deactivate,Excel97为了保持向后的兼容性对这四个宏予以了保留在本文所列举的通讯录处理程序中,有一个AutoOpen宏的应用例子Sub auto_open通讯录处理程序.ShowEnd Sub通过此宏的应用,打开文件“打印通讯录.xls”将同时激活“通讯录处理程序”窗体,使Excel97的应用更加自动化这只是运用AutoOpen宏的一个最简单的例子,实际上,Auto_0pen宏在设置密码、初始化工作簿以及定义Excel97工作环境等方面都能发挥极大的作用至此,一个较为完整的通讯录处理程序编制完毕在实际工作中,用户所处理的.业务会远远复杂于本文所列举的例子,但具体操作过程大致不会超出上面所述范畴需要说明的是虽然Excel97保留了这四个宏,但是Excel97新增加的自动响应事件的功能却要强大得多Excel97常用的自动响应事件有46个,以上四个宏分别被Open事件、用orkbookBeforeClose事件、Activate事件和Deactivate事件所代替Open事件是打开工作簿时自动响应的事件WorkbookBeforeClose事件是当任一打开的工作簿要关闭时立即产生的事件Activate事件是激活一个工作簿、工作表、图表或嵌入式图表时自动响应的事件Deactivate事件是图表、工作表或工作簿从活动状态转为非活动状态时自动响应的事件用户掌握和熟练使用Excel97事件,能在Excel97的应用方面达到一个新的境界读书人推崇开卷有益,在Excel97的应用中同样包含“温故而知新”的哲理.,博大精深的Excel97,为我们提供了许许多多神奇的功能,需要我们在日常应用中去不断地探索和挖掘第三步,设置窗体属性,在本例中将窗体的Cption属性和名称属性都设置为“通讯录处理程序”;第四步,为窗体添加控件,同时设置控件属性,窗体控件的属性很多,Excel97为每个控件属性都定义了一个默认值,因此,用户不必对每一个属性都重新设置,只需设置用户认为需要更改的属性即可;第五步,通过控件的Click事件指定宏,如将宏“打印通讯录”指定给控件“打印通讯录”的代码如下Private Sub打印通讯录_ClickRun〃打印通讯录〃End Sub注意在用户自定窗体的类模块中不能直接调用Excel97宏,必须使用Run方法,在使用Run方法调用宏的过程中,宏名应包括在括号和引号内Excel97所提供的通过载体运行宏的特性,使用户在开发管理程序的时候更加得心应手㈣自动运行的宏在Excel5中有四个自动执行的宏Auto Open、Auto_Close AutoActivate和Auto Deactivate,Excel97为了保持向后的兼容性对这四个宏予以了保留在本文所列举的通讯录处理程序中,有一个Auto,Open宏的应用例子Sub auto_open通讯录处理程序.ShowEnd Sub通过此宏的应用,打开文件“打印通讯录.xls”将同时激活“通讯录处理程序”窗体,使Excel97的应用更加自动化这只是运用AutoOpen宏的一个最简单的例子,实际上,Auto_0pen宏在设置密码、初始化工作簿以及定义Excel97工作环境等方面都能发挥极大的作用至此,一个较为完整的通讯录处理程序编制完毕在实际工作中,用户所处理的业务会远远复杂于本文所列举的例子,但具体操作过程大致不会超出上面所述范畴需要说明的是在Excel里通过使用宏我们可以实现许多普通方法无法实现的功能!一个简单的例子就足以说明这一点在Excel里的sheetl的SelectionChange事件里写入如下代码MsgBox Selection.Cells.Count那么在你点选单元格的时候,excel会弹出提示框告诉你所选取的单元格的数目整个过程的完整代码为Private SubWorksheet SelectionChangeByVaiTarget As Range MsgBox Selection.Cells.Count End Sub是不是很奇妙!在Excel里编写宏的语言是vba语言visual basicfor application,学好它对你更好的使用Excel绝对大有裨益!很多初学者都在这方面开始努力,但是在自己独立编写宏的时候也常常碰到一些问题而且这些问题在excel的帮助文件里很难找到答案我在这里列举几个出现频率较高的问题与大家一起分析,希望能带给大家一些启发
1、如何隐藏宏的执行过程一个宏编写完后,执行的过程就是一行一行运行代码的过程,这时屏幕会反映每一个步骤所产生的变化这样不仅看上去不美观而且会暴露编程思路更重要的是这样也会降低系统的执行速度!所以,我们应该屏蔽掉这个过程方法在你写的宏代码的第一行前加上一句:Applicatiion.screenupdate=False然后在你的代码的最后加上Applicatiion.screenupdate=True这样就可以达到你屏蔽程序执行过程的目的了
2、如何在宏代码里使用工作表函数在Excel里有很多函数使用起来很方便,譬如;sum;average;niin;max.但是工作表函数是不能在宏代码里直接使用的它们和vba语言中的函数是不一样的Vba中的函数例如val,mid在工作表里也不能通用所以我在这里讲解一下在vba语言里调用工作表函数的方法让一个变量得到单元格A1到B5的总和变量设为X X=SUMRANGE〃A1:B5〃的写法明显是行不通的;正确写法是X=APPLICATION.WORKSHEETFUNCTION.SUM RANGEAl:B5〃也就是说必须通过Application对象的Worksheetfunction属性来间接调用工作表函数!
3、单元格区域与数组我们有时会需要将一个区域的值赋予一个数组或者正好相反是要将一个数组得值填充到一个区域,例如我们要将区域A2到D4的所有单元格中的结果存入一个数组首先,我们应该定义一个数组变量DATA,因为EXCEL工作表示二维的,故而使用二维的数组变量也比较合适!由于A2:D4这个区域有3行,4列所以DIM DATA1TO3,1TO4FOR A=1TO3FOR B=1TO4DATA A,B=RANGE〃A2:D4〃.CELLSA,B.VALUENEXT BNEXTA这样DATA变量就拥有了该区域的所有单元格结果,通过MSGBOX DATA1,1类似的方法里可以一个个的验证之后如果你要将该变量的结果赋予一个区域例如A6:D8;可以用如下代码RANGE〃A6:D8〃.VALUE二DATA的例子就足以说明这一点在Excel里的sheetl的SelectionChange事件里写入如下代码MsgBox Selection.Cells.Count那么在你点选单元格的时候,excel会弹出提示框告诉你所选取的单元格的数目整个过程的完整代码为Private SubWorksheetSelectionChangeByVai TargetAsRangeMsgBoxSelection.Cells.Count End Sub是不是很奇妙!在Excel里编写宏的语言是vba语言visual basicfor application,学好它对你更好的使用Excel绝对大有裨益!很多初学者都在这方面开始努力,但是在自己独立编写宏的时候也常常碰到一些问题而且这些问题在excel的帮助文件里很难找到答案我在这里列举几个出现频率较高的问题与大家一起分析,希望能带给大家一些启发
1、如何隐藏宏的执行过程一个宏编写完后,执行的过程就是一行一行运行代码的过程,这时屏幕会反映每一个步骤所产生的变化这样不仅看上去不美观而且会暴露编程思路更重要的是这样也会降低系统的执行速度!所以,我们应该屏蔽掉这个过程方法在你写的宏代码的第一行前加上一句:Applicatiion.screenupdate=False然后在你的代码的最后加上Applicatiion.screenupdate=True这样就可以达到你屏蔽程序执行过程的目的了
2、如何在宏代码里使用工作表函数在Excel里有很多函数使用起来很方便,譬如;sum;average;min;niax.但是工作表函数是不能在宏代码里直接使用的它们和vba语言中的函数是不一样的Vba中的函数例如val,mid在工作表里也不能通用所以我在这里讲解一下在vba语言里调用工作表函数的方法让一个变量得到单元格A1到B5的总和变量设为X X=SUMRANGE〃A1:B5〃的写法明显是行不通的;正确写法是X=APPLICATION.WORKSHEETFUNCTION.SUM RANGE〃A1:B5〃也就是说必须通过Application对象的Worksheetfunction属性来间接调用工作表函数!
3、单元格区域与数组我们有时会需要将一个区域的值赋予一个数组或者正好相反是要将一个数组得值填充到一个区域,例如我们要将区域A2到D4的所有单元格中的结果存入一个数组首先,我们应该定义一个数组变量DATA,因为EXCEL工作表示二维的,故而使用二维的数组变量也比较合适!由于A2:D4这个区域有3行,4列所以DIM DATA1TO3,1TO4FOR A=1TO3FOR B=1TO4DATA A,B=RANGE〃A2:D4〃.CELLSA,B.VALUENEXT BNEXTA这样DATA变量就拥有了该区域的所有单元格结果,通过MSGBOX DATA1,1类Q我怎么才能让所有的工作簿都能使用我创建的宏?邯郸李贵璨A其中一种方式是先打开包含宏的工作簿这样,同时打开的所有工作簿都可以使用这些宏或者,你也可以将它们保存在一个私人工作簿中如果你使用的是Excel97至2003版本Office,你可以选择“工具”菜单中的“宏”|“录制新宏”如果你使用的是Excel2007,则应单击“开发工具”按钮,并点选“录制宏”;在“宏名”一栏中输入任意名称;点选表单中的“个人宏工作簿”;单击“确认”,然后在工作表中的任何一个单元格点“停”或“停止录制”按钮;关闭Excel,在询问是否要保存对“个人宏工作簿”的修改时,选择“是”;按Alt+Fll打开VBA编辑器,Project Explorer窗口现在就会显示一个VBA Project、Personal,xls或Personal,xlsb列表如图;将你的宏粘贴到Module1上即可行Microsoft Visual Basic-PERSCNALXU FileEdit ViewInsert FormatW OHM一MSBProject-VBAProject JCjBVBAProject calendaracls白…Microsoft Excel Objectsk-Sj Sheet1Sheet1现Sheet2Sheet2k]Sheet3Sheet3•超]ThisWorkbook白登Forms工•••陶UserForm1由窗I Modules白魅由…口VBAProject PERSONALXLSBMicrosoft白…巴ExcelObjectsModulesModule1个人工作簿中的宏可以通用ActiveCell.FormulaRlCl=〃Age〃RangeA2:B3〃.SelectRange〃A2〃.ActivateActiveCell.FormulaRlCl=BUG〃Range〃B2〃.ActivateActiveCell.FormulaRlCl=12〃RangeA3〃.ActivateActiveCell.FormulaRlCl=Archer”Range〃B3〃.ActivateActiveCell.FormulaRlCl=〃37〃
五、得到指定单元格中的值Range〃〈单元格地址>〃.Text
六、插入单元格Selection.Insert Shift:=<X1Direction值〉Selection.EntireRow.InsertSelection.EntireColumn.Insert例Selection.Insert Shift:=xlToRight在当前选中单元格的位置插入单元格并将当前选中的单元格向右移动Selection.Insert Shift:=xlDown在当前选中单元格的位置插入单元格并将当前选中的单元格向下移动Selection.EntireRow.Insert在当前选中单元格的上面插入一行Selection.EntireColumn.Insert在当前选中单元格的左侧插入一列
七、设置字体属性
1.设置字体名称和大小Selection.Font.Name=<字体名称〉Selection.Font.Size=<字号>例Selection.Font.Name=〃隶书〃Selection.Font.Size=15Selection.Font.Bold=True/False加粗Selection.Font.Italic=True/False斜体Selection.Font.Underline=XlUnderlineStyle(下划线样式)下划线XlUnderlineStyle(卜划线样式):xlUnderlineStyl eDouble双下划线xlUnderlineStyleDoubleAccounting会计用双下划线(如果当前单元格中的数据是数字时则下划线的宽度是当前单元格的宽度)xlUnderlineStyleNone没有下划线xlUnderlineStyl eSingle,单下划线xlUnderlineStyleSingleAccounting会计用单下划线(如果当前单元格中的数据是数字时则下划线的宽度是当前单元格的宽度)
3.设置字体的颜色Selection.Font.Colorindex=0到56之间的数字〉Selection.Font.Color=RGB值)
4.设置字体的特殊效果Selection.Font.Strikethrough=True/False删除线Selection.Font.Superscript=True/False上标Selection.Font.Subscript=True/False〉下标
八、清空选中单元格里的内容Selection.ClearContents例Range(Al:A2,B7,2:2).Select选中“Al”、“A2”、例7五个不连续的单元格和第二行Selection.ClearContents,清空“Al”、“A2”、“B7”五个不连续单元格中的所有内容
九、设置选中单元格的边线属性XlBordersIndex(边线)xlEdgeLeft单元格左边线xlEdgeTop单元格上边线xlEdgeRight单元格右边线xlEdgeBottom单元格下边线xlDiagonalDown单元格左上右下斜线xlDiagonalUp单元格左上右下斜线xllnsideVertical多个单元格内垂直线xlTnsideHorizontal多个单元格内水平线
1.设置边线的类型Selection.Borders(〈边线).LineStyle=XILineStyle(边线类型)〉XILineStyle(边线类型):xlLineStyleNone无样式xlContinuous,单线xlDash破折号线(间隔线)xlDashDot破折号点线xlDashDotDot破折号点点线xlDot点线xlDouble,双横线xlSlantDashDot,斜点线
2.设置边线的宽度Selection.Borders(边线)).Weight=〈XlBorderWeight(边线的宽度值)〉XlBorderWeight(宽度值)xlHairline极细xlThin细xlMedium,中等xlThick粗
3.设置边线的颜色Selection.Borders(xlEdgeLeft).Colorindex=0到56之间的数字〉Selection.Borders(xlEdgeLeft).Color=〈RGB值)
十、删除选中的单元格Selection.Delete〈XlDirection值〉Selection.EntireColumn.Delete例Selection.Delete Shift:=xlToLeft删除选中的单元格,并将已删除单元格所在位置右面的单元格向左移动Selection.Delete Shift:=xlUp删除选中的单元格,并将已删除单元格所在位置下面的单元格向上移动Selection.EntireRow.Delete,删除选中单元格所在的行Selection.EntireColumn.Delete删除选中单元格所在的列
十一、设置单元格背景色及图案
1.背景色Selection.Interior.Colorindex=0到56之间的数字〉Selection.Interior.Color=RGB值)
2.图案样式Selection.Interior.Pattern=〈Constants(图案样式)》Constants(图案样式)xlSolid实心xlGray757596灰色xlGray5050%灰色xlGray2525%灰色xlGrayl
612.5%灰色xlGray
86.25%灰色xlHorizontal水平条纹xlVertical垂直条纹xlDown逆对角线条纹xlUp对角线条纹xlChecker对角线剖面线xlSemiGray75粗对角线剖面线xlLightHorizontal细水平条纹xlLightVertical细垂直条纹xlLightUp细对角线条纹xlGrid细水平剖面线xlCrissCross细对角线剖面线
3.图案颜色Selection.Interior.PatternColorIndex=0到56之间的数字〉Selection.Interior.PatternColor=〈RGB值〉
十二、返回工作表中的行数Sheetl.UsedRange.Rows.Count返回从最小已输入内容的行号到最大已输入内容的行号之间的行数Sheetl.UsedRange.Rows Sheetl.UsedRange.Rows.Count.Row,最大已输入内容的行号
十三、得到当前EXCEL的文件名ThisWorkbook.Path文件路径ThisWorkbook.Name文件名ThisWorkbook.FullName全路径
十四、批注的操作
1.添加批注AddComment[Content]例Range〃A1〃.AddComment Writes the content in here!”
2.修改批注内容Comment.Text彳列Range〃B1〃.Comment.Text Text:=Writesthecontentinhere!”
3.显示/隐藏批注Comment.Visible=True/False
4.册赊批注ClearComments彳列Selection.Range〃B1〃.ClearComments
5.选中批注Comment.Shape.Select True彳列Range〃D8〃.Comment.Shape.Select True
6.改变批注大小和位置Selection.ShapeRange.Seal eWidth〈宽度比例,msoFalse,MsoScaleFromSelection.ShapeRange.ScaleHeight〈高度比例,msoFalse,MsoScaleFrom彳列Selection.ShapeRange.ScaleWidth
1.5,msoFalse,msoScaleFromTopLeft Selection.ShapeRange.ScaleHeight
0.6,每次增加5%的宽度msoFalse,msoScaleFromTopLeft Selection.ShapeRange.Left=左边总包〉每次减少6%的宽度Selection.ShapeRange.Top=〈上边演巨〉Selection.ShapeRange.Width=宽度值〉Selection.ShapeRange.Height=高度值
十五、剪切、复制、粘贴Selection.Cut,剪切Selection.Copy复制ActiveSheet.Paste,粘贴例Range〃A1〃.SelectSelection.CutRangeA2〃.SelectActiveSheet.PasteSelection.CopyRange〃A3〃.SelectActiveSheet.Paste
十六、选择性粘贴Selection.PasteSpecial option
十七、改变列宽Selection.ColumnWidth=宽度值,指定列宽例Columns〃A:A.SeiectEntireColumn.AutoFit自动改变列宽例Columns(,ZC:CZ,).EntireColumn.AutoFit,根据C列的内容自动改变列的宽度对于什么是宏有许多种解释,总的来说宏是使任务自动化包括在Sub和EndSub之间的一组指令的集合,Excel97的宏就是贮存在Visual Basic模块中的VBA程序只有充分使用宏,才能深入理解Excel97数据管理各个方面的精妙之处在Excel97应用中怎样使用宏呢?根据平常实际应用经验,我从以下三个方面谈一点心得
一、建立宏直接建立宏有两种途径㈠使用Excel97提供的宏记录器建立宏运用宏记录器记录宏基本可分为三个步骤,第一步启动宏记录器从Excel97工具菜单中选取“宏”,然后选中“录制新宏”选项,从弹出的“录制新宏”窗口中,用户可以为即将录制的宏定义一个便于识别的名字和快捷键,并确定宏的保存地址,其中宏名为必选项,若用户未定义宏名,宏记录器将自动为所录制的宏定义一个默认的名字,快捷键和保存地址由用户根据需要自由设定,宏记录器默认用户所录制的宏保存在当前工作簿第二步执行希望录制的动作这是使用宏记录器建立宏的关键,因为在这个步骤中,用户每一个完成的动作都将被宏记录器所录制,所以,为了使宏达到简捷、实用的目的,用户的动作一定要精炼、准确,尽可能地用最少的动作完成预定的任务第三步停止记录Excel97的宏记录器具有一定的智能判断能力,只记录已完成的动作,不会记录用户选择错误或修改错误的过程例如,它不会记录打开对话框的菜单命令,直到单击了对话框上的“确定”为止,若用户打开对话框后选择了“取消”,宏记录器则不会录制该动作在录制宏的过程中,用户不能离开Excel97的工作环境,否则,用户的动作将不能被记录举一个简单的例子在Excel97中打开一个名为“通讯录.dbf”的数据库文件,运用宏记录器建立一个名为“打开数据库”的宏,具体操作为1,进入Excel97,新建一个工作簿;
2.将工作簿命名为“打印通讯录”(若准备在工作簿中使用宏应养成为新建工作簿命名的操作习惯);
3.启动宏记录器,并定义宏名为“打开数据库”;
4.运用Excel97的打开文件向导打开数据库文件“通讯录.dbf”;
5.在工具菜单的“宏”选项下选择“停止记录”,或单击“停止录制”按钮通过上面的操作并稍加调整得到的宏代码为Sub打开数据库()Workbooks.Open FileNamc:=”通讯录.dbf〃EndSub在文件名前可以包含详细路径,这是由打开文件时选择路径的动作所决定的㈡使用Visual Basic编辑器建立宏Excel97的Visual Basic编辑器的功能十分强大,它不仅可以建立宏,还可以建立用户自定义函数、用户自定义窗体和过程从工具菜单的“宏”选项下选择“Visual Basic编辑器”即可进入编辑窗口,在通过编辑器建立宏的过程中,可以使用拷贝、复制、粘贴、删除、插入、查找、替换、缩进、凸出等所有的文本编辑功能,同时编辑器还提供了自动语法检测和提示功能,所以,即使从未涉及宏语言Visual BasicforApplication的用户,也能够在很短的时间内掌握并熟练使用Visual Basic编辑器使用Visual Basic编辑器建立宏基本也可以分为三个步骤,即插入模块、编写宏代码、关闭编辑器并返回Excel97例如,要将打开的数据库文件“通讯录.dbf”中的记录运用表格的方式打印出来,建立一个名为“打印通讯录”的宏,可以分为以下步骤
1.根据数据库的字段建立打印页面在本例中数据库文件“通讯录.dbf”有六个字段序号、联系人、联系地址、联系电话、邮政编码、备注,其中序号是第一个字段,也是数据库记录的唯一标识,数据库记录按序号值进行升序排列,文件打开后,序号值存放在Excel97工作表的第A列中
2.将打印页面工作表命名为“通讯录打印页面”,并根据页面大小确定每页打印的记录数量(在此设为30)
3.分析宏运行过程中应注意的要点在此例中首先应判断数据记录的个数,以确定需要打印的页数;其次,在打印之前应选择对应的数据填入打印页面;第三,在连续打印的过程中程序应给予适当的提示,允许用户整理打印机或中途退出打印过程
4.进入VisualBasic编辑器,插入模块,编写宏代码在编写宏代码的过程中可以在代码中加注,以增加宏代码的可读性根据以上分析,完成通讯录打印过程的宏代码如下Sub打印通讯录()Dim Value,nol,no2,页数As IntegerDimsss,sssl,sss2,sss3As StringDimqqq AsRangeWindows〃通讯录.dbf〃.Activate计算A列中值大于0的单元格个数,即记录个数nol=2在〃通讯录.dbf〃中第一行为字段标题,计数从第二行开始Do Whilenol0sss=〃a〃nolValue=RangesssIf Value0Then nol=nol+1ElseExit DoEndIfLoopsss=Str nol-2nol的初始值为2,故nol-2为数据库的记录数记录数除以每页的记录容量即页数If nol-2/30=Intnol-2/30Then页数二nol-2/30Else页数=Int nol-2/30+1End Ifsssl=Str页数no2二1Do Whileno20Windows〃通讯录.dbf.Activate由于数据库有6个字段,故第1列至第6列为数据区域Set qqq=RangeCellsno2-1*30+2,1,Cellsno2*30+1,6qqq.CopyWindows〃打印通讯录.xls〃.ActivateSheets〃通讯录打印页面〃.SelectRange〃A4,Select选定打印页面数据区域的左上角将相应数据选择性粘贴到打印页面中Selection.PasteSpecial Paste:=xlValues,Operation:=xINone,SkipBlanks:=False,Transpose:=Falsesss2=Str no2sss3=〃数据库中共有〃+sss+〃条记录,共〃+sssl+〃页,目前表中为第〃+sss2+〃页数据,打印吗?〃www=MsgBox sss3,68,〃提示〃当从提示框中选择“否”时用户可中途退出打印过程If www=vbNo ThenExitDoElseActiveWindow.SelectedSheets.Printout From:=l,To:=l,_Copies:=1,Collate:=TrueEnd Ifno2=no2+1Loop。
个人认证
优秀文档
获得点赞 0