《EXCEL加载宏制作攻略.docx》由会员分享,可在线阅读,更多相关《EXCEL加载宏制作攻略.docx(13页珍藏版)》请在第壹文秘上搜索。
1、EXCE1.加载宏制作攻略日期:2007-08-01)来源:作者:QEE用字体:大中小)一、概述1 .制作加教宏的一般步骤(1)创建一个新的工作薄,在其中添加代码。(2)在“文件”菜单上单击“属性在“文件名属性”对话框中,单由“摘要信息”选项卡,然后在“标题”框中为加载宏指定个您希望在“加载宏”对话框中出现的名称,在“备注”框中输入您希望当用户从“加我宏”对话框选择该加载宏时在“加载宏”对话框下方出现的说明信息。(3)在“文件”菜单上单击“另存为”。在“另存为”对话框中,从“保存类型”框中选择“Mier。SoftoffiCeEXCel加载宏(*.xla)w,然后再选择保存路径,并可在“文件名”
2、框中修改文件名。2 .加载宏的加载和卸载通过在“工具”菜单上单击“加载宏”,可以加战制作好的加栽宏文件,假如它不在列表中,可以在“加我宏”对话框中单击“阅读”找到它,当某个加栽宏名称前的复选框被选中时,说明它已经加载,取消选中复选框即为卸载该加载宏。3 .加战宏的作用加载宏可以扩展EXCE1.的功能,将代码写在加载宏中和写在搬的工作簿中相比,有如下优点:(1)加载宏对全部打开的EXCE1.文件都生效。一般工作簿的代码股只在特定的工作簿中才生效。(2)加战宏不受宏平安级的限制,也不会有宏运行的提示。即使将平安级设为“特别高”,加我宏就象EXCE1.本身固有的功能一样工作C同样,它也不会被按住的S
3、hift屏蔽。特殊提请不习惯运用加载宏而特地VBA代码书写的挚友们留意的是,加栽宏的全部好处和优点,都是属于EXCE1.的常规操作者的,虽然加载宏中的代码可以被其他工作簿(中的代码)调用,但这样做是繁琐而低效的,千万不要把它当成了C中的“头”文件或处接库。或许不会有许多人这样认为,但笔者初学VBA的时候,真的这样天真过。(3)加载宏在运行时其工作簿商”是隐藏的,因此一般用户并不会感觉到它的存在。二、处理加载宏函数加战宏函数好像是制作加载宏中最简洁的,通常它只须要在模块中写一段FUnCtion代码,它就会和EXCE1.自身的函数样运用,并且出现在“插入函数”对话框的列表中。关于函数的制作,再没有
4、其它的吗?1.为函数添加说明信息至少你可以通过对象阅读器设置“属性”为函数添加一段说明信息(对须要换行的说明可以在编辑时运用蛆合健CTR1.+ENTER),这些信息当用户运用“插入函数”对话框时就会看到。须要说明的是,在对象阅读器中为函数添加说明信息必需在“另存为”加载宏之前,旦文件名的后缀变为X1.A,函数的属性设置将不被接受。关于为函数定制说明信息,请参见:图示自定义函数描述信息与有关介绍。现在,请你新建一个工作簿,插入模块,粘贴下面的代码:Functiondx(n),byglyl126金额小写转换为大写dx=Replace(Application.Text(Round(n+0.00000
5、001,2),DBnum2),元)dx=IIf(1.eft(Right(dx,3),1)=元,1.eft(dx,1.en(dx)-1)&角&Right(dx,1)&分,IIf(1.eft(Right(dx,2),1)=元,dx&角整”,IIf(dx=”零dx&”元整”)dx=RePIaCe(RePIaCe(RePIaCe(RePlaCe(dx,零无零角零元零角,零负)EndFunction假如觉得必要,你可以设置文件属性(见一、1.(2)并为该函数添加说明,先把它做为一般的工作簿保存(我们后面还会接着用它)再另存为X1.A,然后感受一下它的效果吧。对已经成为X1.A文件的函数说明的添加与修改并
6、不须要总是手工先还原为X1.S文件,我们稽后就会提到MaCrOoPtionS方法。在此之前,先来说一下与加载宏相关的WOrkboOk事务:(1) AddinInstall和AddinUninstal1.这两个事务分别发生在加载宏加栽和卸栽时的,因此运用这两个事务的工作簿肯定是X1.A工作簿,你须要记住的是,它们在加载宏作用期内各H只会发生一次,加载宏加载后每次EXCE1.的打开和关闭都不会触发它们。(2) Open和BeforeCloseu和上两个事务不同,这两个事务在加载宏一般EXCE1.文件除了后缀形式上的区分外,一个重要的内在区分就是ISAddin属性,该属性为TrUe说明是加载宏工作簿
7、,MacroOptions法对宏的设置不能在隐藏的工作簿中进行,须要先将还原为一般工作簿,加入宏设置后再改回。这两次变更不会触发AddinInstall和AddinUninstall事务,但EXCE1.会记住一般EXCE1.文件的修改,因此在完成设置后,还须要加一句ThisWorkbook.Saved=True以使EXCE1.遗忘这种变更。穴面列出了EXCE1.内部分类对应的Category参数的整数。1:财务2:日期与时间3:数学与三角函数4:统计5:查找与引用6:数据库7:文本8:逻辑9:信息假如你不想记住这些整数的含义,你可以干脆写成:Application.MacroOptionsMa
8、cro:=dx,Category:=财务那么是否可以为加载宏函数增加一个新类别呢?很简洁!只须要将上面的CategOry参数变更一下就可以了:Application-MacroOptionsMacro:=dx,Category:=财务扩展函数上句会在“插入函数”对话框中增加一个新类别“财务扩展函数”,并把dx函数放入其中。MaCrOOPtiOnS方法还有其它一些参数,可以帮助我们,包括为函数添加说明,Z面语句在分类的同时会为函数增加说明。Application.MacroOptionsMacro:=dx,DCSCriPtior:=金额小写转换为大写&vbCr&”参数N:要转换的金额。,Cate
9、gory:=财务扩展函数让我们再次回到OPen事务中,看看这3句代码:ThisWorkbook-IsAddin=FalseThisWorkbookJsAddin=TrueThisWorkbook.Savcd=True在加载宏文件中运用类似在无耐状况卜.才采纳的变通代码,达到的目的仅仅是一般人并不留意的函数分类,我想我已经把你引入岐途,真的很傀疚。我该如何订正呢?我无意保留一个没有多大好用价值的技巧,我更希望由你说出来三、处理加载宏过程加我宏的另个重用功能就是供应扩展的操作,这通常是写在模块中的SUb过程。设计加栽宏过程应留意两个方面,一是代码实体,二是供应适当的接口方式以便用户可以运用这些操作
10、.在代码实体的设计上,加载宏代码与其它VBA代码看上去或许没有太多的差别,但它要求设计者更为亲密地留意加载宏的运行环境,对象成员的运用也更应规范和严读。比如,喜爱混用ThisWorkbook和ACtiVeWQrkb。Ok的挚友要好好看看帮助文档中二者的差别了。现在请在模块中粘贴下面的代码:SubHVCenterO,这段代码的含义很简洁,让选定区域文字水平垂直居中WithSelection.HorizontalAlignment=XlCenter.VerticalAlignment=XlCenterEndWithEndSub在接口处理上,一股有3种处理方式“1 .快捷键为过程设置快捷键可以在另存
11、为加载宏文件前在“工具”菜单上单击“宏”-“宏”,在“宏”对话框中,单击“选项”按钮完成。也可运用前面介绍过的MacroOptions方法设置。Application.MacroOptionsMacro:=,HasShortcutKeyr=True,ShortcutKey:=Am2 .菜单通过在系统菜单上增加菜单项可以将操作供应应运用者,加载宏是对EXCE1.基本功能的扩充,一般不提倡运用自定义菜单来代替系统菜单。3 .工具栏可以运用EXCE1.现方的工具栏上增加按钮也可以通过新建工具栏来完成。卜面代码将前面的过程关联到新建的菜单项和工具栏上。PrivateSubWorkbook-Addinl
12、nstall()OnErrorResumeNext新建菜单WithApplication.CommandBars(I).Controls.Add(Type:=msoControlPoPUP).Caption=测试(&T)With.Controls.Add(Type:=msoControlButton).Caption=居中.OnAction=HVCenterEndWithEndWith新建工具栏WithApplication.CommandBars.Add(Name:=myCmdbar).Position=msoBarTopWith.Controls.Add.FaceId=352.Captio
13、n=居中”.OnAction=HVCenterEndWith.Visible=TrueEndWithEndSub由于工具栏和菜单生成后不会随EXCE1.的关闭而消逝,因此创建工具栏和菜单的代码般应写在AddinInstall事务中,并且在加载宏卸载时随之卸载。下面代码卸载前面创建的工具栏和菜单。PrivateSubWorkbook-AddinUninstallOOnErrorResumeNextDimctlAsCommandBarControl卸载工具栏和菜单Application.CommandBarsCmyCmdbar).DeleteForEachctlInApplication.Comm
14、andBars(I),ControlsIfctl.Caption=测试(&T)Thenctl.DeleteNextctlEndSub四、处理加载宏事务原则上讲,加我宏事务应对全部打开工作簿发生的事务进行处理,加载宏事务的设计相对函数和过程的设计而言通常要困难得多,它要求设计者具有肯定的类学问和良好的代码组织实力。详细设计主要应解决两方面问题,一是事务代码本身,二是将预作的“事务代码”和对象关联C我们仍通过实例,接着前面的设计来介绍。任务:让加栽宏实现当用户在活动工作簿的活动工作表选择某一区域时,状态栏显示该区域的范用。1 .设计事务代码(1)分析要用的对象和事务不难知道,本例须要Workboo
15、k对象的SheetSelectionChange的事务C忏先运用WithEvents关犍字定义个Workbook对象。DimWithEventswkbAsWorkbook留意,WithEVentS关键字不能在标准模块中运用,因此,代码般写在Thisworkbook*(2)书写事务代码PrivateSubwkb_SheetSelectionChange(ByValShAsObject,ByValTargetAsRange)Application-StatusBar=你选择的区域:”&Replace(Target.Address,)EndSub2 .关联对象(1)分析须要关联的全部状况写好了上面的代码,如何将它与活动工作簿关联呢?首先应当分析可能进行关联的时机。以本例,大体我们将须要(变更)关联,即活动工作簿发生变更的状况列示如下:a当新建工作簿时,关联对象为新建的工作簿b当新打开工作簿时,关联对象为新打开工作簿c当在两个工作簿之间切换时,关联对象为新切换到的工作簿(2)完成关联代码上面的分析知道,须要用到