您好,欢迎访问三七文档
VBA之宏基本础篇前面几贴的自定义基本都是Excel的功能,只是可能大家没有仔细总结,后面的自定义就基本是用VBA来完成的。我曾经说过,在excel的应用中,我还中最喜欢VBA和学习研究VBA,ZSH_000也有一贴VBA的入门贴,那我也来讲讲我心中对VBA的认识。什么是宏?宏是VBA语言编出的一段程序,是一系列命令和函数,存储于VisualBasic模块中,并且在需要执行该项任务时可随时运行。什么是VBA?VBA是VisualBasicforApplications的简称,VisualBasic(VB)在office的应用版。VBA是与VB类似或者对大家说可以说是一样的语言,而VB是以易用易学著称!我以前曾经考过二级的C,后来本来想学C++却因自己一个人学习,倍感困难而放弃。但从一个偶然的机会发现Office里的VBA起而开始学习VB,但后来大部份都是在VBA里学习,而没有进一步再去,但学习VB的途径会比较多,大家也可能从学习VB开始。宏有什么用?如果经常在MicrosoftExcel中重复某项任务,那么可以用宏自动执行该任务。这是宏在Excel帮助中的用途,而宏的用处不仅仅在于此。就象有人说,VB能干什么?而有人回答,什么都可以!但个人认为,不一定什么东西非要用VBA,Excel中本身自带的很多功能都能解决很多的问题!但这些功能也都能通过代码的方式来表达!怎么开始学习VBA?这是不少吧友常问的问题之一。个人认为学习什么东西,最好的开始是兴趣,本贴的创建的原因也在于此。后面的内容可能大家在工作与生活中都没有什么实际的用处,但我希望后面的内容能引起大家对VBA编程的兴趣。而开始学习VBA我认为第一步从录制宏开始。何为录制宏?录制宏是excel的一个功能,它能将用户的操作转化为代码,这样即使你一点都不懂得编程,也可以通过录制宏来生成一段宏!这个功能在工具菜单/宏中。点击录制新宏,在选择保存的地方(个人宏工作簿/当前工作簿或新工作簿),接着只要按我们平时的操作过程操作Excel,完了之后按停止录制宏结束,这样就可以生成一段宏程序。录制宏的功能有何用?除了能生成一段宏外,我们还可以将操作的过程序变成宏后,再通过其代码来了解这过程的相关要用到的属性啦,方法啦等,对于初学者,这是一个非常好的自学方法之一。从哪可以看到宏代码?宏我们录制好了,那我们从哪里可以看到我们录好的宏的代码呢?点击工具/宏/VBA编辑器或按Alt+F11,就可以进入VBA编辑器,在里面就可以看到我们录制好的代码。怎么运行宏?从工具/宏/宏中,通过选择其中的名称,就可以运行我们的宏了,当然我们也可以在VBA编辑器中运行宏,先将光标移到宏所在的代码中,再点击运行菜单中的运行子过程或窗体,或按工具栏中的相应的按钮,或用快捷键F5,就可以运行子过程了,注意!!!宏对文件的一切操作是不可撤消的,在不了解宏的功能之前,最好的方法是先保存文件(更好就备份一份啦),然后再运行宏,如果发现宏运行后的结果有误,就可以关闭文件且不保存,这样再打开文件就可以还原到运行宏前的状态(注:宏也可以自行保存文件,这时这个办法就无效了)VBA之宏操作篇其实这一篇与上一篇是写给完全不了解VBA的朋友,让他们也可能体会一下之后的功能,但!这个贴子的内容,我在上篇已说过,目的是让吧友们对VBA产生兴趣而不是教大家从零开始!怎么获得帮助?还记得第一贴中我的见意了吗?现在就要用到VBA的帮助了!在VBA编辑器中按F1即可调出VBA的帮助,如果大家有兴趣细细地看上一次(全部哦!),那你一定会从中收获不少的。如果更快地获得帮助,找到帮助的内容呢?一个当然就是在索引与应答向导里寻找,另一个就是先选择代码中的词,再按F1即可。第一个宏!上贴已介绍大家如何利用录制宏生成我们的宏代码,而这一贴,我来介绍如何利用VBA编辑器来创建一个宏!学过编程的朋友都知道有名的Hello!World!的程序,那我们现在就来创建这个宏!新建一个文件后,保存这hello,然后进入VBA编辑器,在工程资源管理器中选择这个hello工程(默认在左上侧的窗口,看不到工程资源管理器,可以点击菜单视图/工程资源管理器或按Ctrl+R,工具栏中也有对应的按钮),然后点击插入/模块(工具栏中也有相应按钮),这时工程资源管理器就会多了一个模块,里面就多了一个模块1(也有可能是英文名),双击这个东东,就可以编辑我们的代码了。接下来在菜单插入/过程中添过一个子程序,名称命名为hello,点击确定后就会自动生成一个过程序的头PublicSubhello()和尾EndSub,那么我们的代码就可以在这之间加入了!这个程序我们用三行代码做三件事!在A1格中写入Hello!World!,在立即窗口(默认在右下方,没有看到立即窗口,也在视图中点击立即窗口让它显示)中写入Hello!World!,用一个消息框弹出Hello!World!,三行代码为:Range(A1).Value=Hello!World!Debug.PrintHello!World!MsgBoxHello!World!运行宏后就各到我们上面要做的事情了!最后再说几个VBA有关的概念:什么叫个人宏工作簿?个人宏工作簿名称为PERSONAL.XLS,如果存在,是随EXCEL启动而打开的,可以从窗口/取消隐藏看到它的真面目,第一次可以录制一个宏并保存在个人宏工作簿来生成它。怎样才能将网页代码移到你的文件中?复制,粘贴到你的代码窗口即可,有些朋友可能没有包含过程的头与尾,自行加入即可。怎样才能将一个文件的代码移到另一个文件?除了上面说的方法,还可以导出整个模块(右击该模块)再导入(右击需要导入的工程)即可。VBA之自定义函数这一贴说的是自定义函数。Excel本身已自带了很多函数,供我们使用,但有些问题用原有的函数解决起来很复杂,甚至是无能为力,但有了VBA,可能就可以现实。怎样自定义一个函数?下面我们建一个名为RangeCount和函数,用来统计给定单元格数量。上贴说过怎么插入一个宏(子程序),其实细心的朋友就会发现,里面有一项函数的选项,就是用这个添加了!键入你需要的名称RangeCount,即会自动生成一个函数的头PublicFunctionRangeCount()和尾EndFunction!这时大家可以知道,子程序都是以Sub关键字开头,而函数是以Function关键字开头。怎样给自定义函数传递参数?用过Sum函数的朋友都知道Sum的用法,在单元格中键入=Sum(A1:A10)就能对A1:A10进行求和,那么怎么让我们的自定义函数也有此功能呢,其实很简单,只要在FunctionRangeCount()中的(与)之间加入即可,象现在我们要给这个自定义函数传递一个单元格的参数,即在()间加入XRanAsRange即可。其中XRan就是我们给这个参数设定的名称,As是关键字,而Range就是给定参当数的类型(单元格类型),更详细的说明可以参见VBA的帮助(上贴有说明怎么用帮助了吧:))。怎么样自定义函数加入功能?其实也和子程序一样,在函数的头PublicFunctionRangeCount()和尾EndFunction之间就可以加入代码,我们这个函数的代码只有一句:RangeCount=XRan.Count怎么样让自定义函数返回值?从上面的例子看出,只要将函数的名称设定为需要返回的值即可。怎么当前工作表中使用自定久函数?使用自定义函数的方法其实和一般函数的方法是一样的,在单元格中键入=RangeCount(A1:A10),即可以得到值(10)!当然,也可以通过菜单插入/函数,在类别中选择用户自定义里找到你自定义的函数。怎么在工作表里使用别的工作表里的自定义函数?从菜单插入/函数,类别中的用户自定义里,可以看到,如果这个自定义函数不是在当前的工作表里的,函数会变成——文件名.xls!函数名了,这样我们使用上面的自定义函数就变成=Book1.xls!RangeCount(A1:A10)(设我们刚才保存文件为Book1)。怎么样在任何工作表中使用自定义函数?自定义了函数后,每一次使用都要打开这个工作簿,不方便,那么怎么样让任何工作簿都能使用这个自定义函数呢?有两个方法,第一个就是把代码写在上面说到的个人宏工作簿中,因为个人宏工作簿都是随Excel自动打开的,那么我们就可以通过PERSONAL.XLS!函数名来使用这个自定义函数。第二个方法就是加载宏(关于加载宏的其它用法和具体说明以后还会有专门的一贴),将包含这个自定义函数的工作簿,去掉无关的内容(不去当然也行啦!)后另存为加载宏(不会不知道怎么另存吧,汗!后注!),这样在菜单工具/加载宏里,将相关项前打勾,即可使用该自定义函数,这时使用函数的方法只要直接用函数名即可,如=RangeCount(A1:A10)。最后再说一点大家少遇到的现象:用过VBA后,大家知道在同一模块中是不能有相同名称的子程序与函数的,如果有,运行时会提示存在二义性!但在不同模块中,却能有相同甸称的函数存在,那么怎么使用这样的函数呢?从菜单插入/函数,类别中的用户自定义里,我们可以看出这样的函数变成模块名.函数名了,这样我们的使用方法就是=模块1.RangeCount(A1:A10)或=模块2.RangeCount(A1:A10)。后注:详细的另存为加载宏的过程,点击菜单/文件/另存为,在文件类型里选择MicrosoftExcel加载宏项,这时文件夹自动转到保存加载宏的AddIns,再保存即可。附:上面RangeCount的完整代码:FunctionRangeCount(XRanAsRange)RangeCount=XRan.CountEndFunction下面给出两个自定义函数,按给颜色求和SumColor与计数CountColorFunctionSumColor(rColorAsRange,rSumRangeAsRange)DimrCellAsRangeDimiColAsIntegerDimvResultApplication.VolatileiCol=rColor.Interior.ColorIndexForEachrCellInrSumRangeIfrCell.Interior.ColorIndex=iColThenvResult=WorksheetFunction.Sum(rCell)+vResultEndIfNextrCellSumColor=vResultEndFunctionFunctionCountColor(rColorAsRange,rSumRangeAsRange)DimrCellAsRangeDimiColAsIntegerDimvResultApplication.VolatileiCol=rColor.Interior.ColorIndexForEachrCellInrSumRangeIfrCell.Interior.ColorIndex=iColThenvResult=vResult+1EndIfNextrCellCountColor=vResultEndFunction自定义模板今天突然发现还有一个不是VBA的自定义项没有说——模板。以下几点是Excel关于模板的说明。关于模板:若要创建新工作簿,使其具有您所希望的格式,则可基于模板来新建工作簿。模板中可包含格式样式、标准的文本(如页眉和行列标志)、公式、VisualBasicforApplications宏和自定义工具栏等。默认工作簿模板:您可创建默认工作簿模板。该模板定义了您启动MicrosoftExcel时打开的新工作簿的格式和内容。通过单击“新建”或选择“模板”对话框(“通用模板”、“新建工作簿”任务窗格)中的工作簿模板所创建的工作簿是基于默认工作簿模板的文件。默认的工作簿模板的文件名为Book.xlt。您可以为特定的任务和项目创建其他自定义的工作簿模板。默认工作表模板:您可创建默认工作表模板。该模板定义了您使用“工作表”命令(“插入”菜单)插入的默认工作表的格式和内容。默认的工作表模板的文件
本文标题:VBA之宏基本篇
链接地址:https://www.777doc.com/doc-347464 .html