EXCEL加载宏制作攻略_第1页
EXCEL加载宏制作攻略_第2页
EXCEL加载宏制作攻略_第3页
EXCEL加载宏制作攻略_第4页
EXCEL加载宏制作攻略_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

7页脚内容Excel中如何实现比对不同工作表中相同信息EXCEL加载宏制作攻略一、概述1.制作加载宏的一般步骤(1)创建一个新的工作薄,在其中添加代码。(2)在“文件”菜单上单击“属性”。在“文件名属性”对话框中,单击“摘要信息”选项卡,然后在“标题”框中为加载宏指定一个您希望在“加载宏”对话框中出现的名称,在“备注”框中输入您希望当用户从“加载宏”对话框选择该加载宏时在“加载宏”对话框下方出现的说明信息。(3)在“文件”菜单上单击“另存为”。在“另存为”对话框中,从“保存类型”框中选择“MicrosoftOfficeExcel加载宏(*.xla)”,然后再选择保存路径,并可在“文件名”框中修2.加载宏的加载和卸载可以在“加载宏”对话框中单击“浏览”找到它,当某个加载宏名称前的复选框被选中时,(1)加载宏对所有打开的EXCEL文件都生效。普通工作簿的代码一般只在特定的工作簿中才生效。(2)加载宏不受宏安全级的限制,也不会有宏运行的提示。即使将安全级设为“非常高”,加载宏就象EXCEL本身固有的功能一样工作。同样,它也不会被按住的Shift屏蔽。特别提请不习惯使用加载宏而专门VBA代码书写的朋友们注意的是,加载宏的所有好处和EL(3)加载宏在运行时其工作簿窗口是隐藏的,因此普通用户并不会感觉到它的存在。二、处理加载宏函数加载宏函数似乎是制作加载宏中最简单的,通常它只需要在模块中写一段Function代码,1.为函数添加说明信息在编辑时使用组合键CTRL+ENTER),这些信息当用户使用“插入函数”对话框时就会看到。需要说明的是,在对象浏览器中为函数添加说明信息必须在“另存为”加载宏之前,一旦文7页脚内容Excel中如何实现比对不同工作表中相同信息Functiondx(n)'bygly1126金额小写转换为大写dx=Replace(Application.Text(Round(n+0.00000001,2),"[DBnum2]"),".","元")dx=IIf(Left(Right(dx,3),1)="元",Left(dx,Len(dx)-1)&"角"&Right(dx,1)&"分",IIf(Left(Right(dx,2),1)="元",dx&"角整",IIf(dx="零","",dx&"元整")))dx=Replace(Replace(Replace(Replace(dx,"零元零角",""),"零元",""),"零角","零"),"-","负")EndFunction如果觉得必要,你可以设置文件属性(见一、1.(2))并为该函数添加说明,先把它做为普通的工作簿保存(我们后面还会继续用它)再另存为XLA,然后感受一下它的效果吧。book (1)AddinInstall和AddinUninstall。这两个事件分别发生在加载宏加载和卸载时的,因此使用这两个事件的工作簿一定是XLA工作簿,你需要记住的是,它们在加载宏作用期内各自只会发生一次,加载宏加载后每次EXCEL的打开和关闭都不会触发它们。(2)Open和BeforeClose。和上两个事件不同,这两个事件在加载宏作用期内会被多次触清楚了上述特性,你就应该知道如何合理安排加载宏的初始化代码。2.为函数分类Application.MacroOptionsMacro:="dx",Category:=1不熟悉这个方法不要紧,看完后面的例子你再去查看一下它的帮助,很快就会掌握的。现在的问题,上面的语句放在哪儿呢?首先把它放在AddinInstall事件中看看,你会发现,PrivateSubWorkbook_Open()ThisWorkbook.IsAddin=FalseApplication.MacroOptionsMacro:="dx",Category:=1ThisWorkbook.IsAddin=TrueThisWorkbook.Saved=True了后缀形式上的区别外,一个重要的内在区别就是IsAddin属性,该属性为True说明是加载宏工作簿,MacroOptions方法对宏的设置不能在隐藏的工作簿中进行,需要先将还原为ThisWorkbook.Saved=True以使EXCEL忘记这种改变。4:统计5:查找与引用6:数据库7:文本8:逻辑9:信息7页脚内容Excel中如何实现比对不同工作表中相同信息如果你不想记住这些整数的含义,你可以直接写成:Application.MacroOptionsMacro:="dx",Category:="财务"那么是否可以为加载宏函数增加一个新类别呢?很简单!只需要将上面的Category参数改Application.MacroOptionsMacro:="dx",Category:="财务扩展函数"MacroOptions方法还有其它一些参数,可以帮助我们,包括为函数添加说明,下面语句在分类的同时会为函数增加说明。Application.MacroOptionsMacro:="dx",Description:="金额小写转换为大写"&vbCr&"参数N:ThisWorkbook.IsAddin=FalseThisWorkbook.IsAddin=TrueThisWorkbook.Saved=True在加载宏文件中使用类似在无耐情况下才采用的变通代码,达到的目的仅仅是一般人并不注意的函数分类,我想我已经把你引入歧途,真的很抱歉。我该如何纠正呢?我无意保留一个没有多大实用价值的技巧,我更希望由你说出来……三、处理加载宏过程加载宏的另一个重用功能就是提供扩展的操作,这通常是写在模块中的Sub过程。设计加载在代码实体的设计上,加载宏代码与其它VBA代码看上去也许没有太多的差别,但它要求混用ThisWorkbook和ActiveWorkbook的朋友要好好看看帮助文档中二者的差别了。在模块中粘贴下面的代码:SubHVCenter()'这段代码的含义很简单,让选定区域文字水平垂直居中WithSelection.HorizontalAlignment=xlCentertxlCenterEndWith在接口处理上,一般有3种处理方式。Application.MacroOptionsMacro:="",HasShortcutKey:=True,ShortcutKey:="A"2.菜单通过在系统菜单上增加菜单项可以将操作提供给使用者,加载宏是对EXCEL基本功能的扩充,一般不提倡使用自定义菜单来代替系统菜单。以使用EXCEL现有的工具栏上增加按钮也可以通过新建工具栏来完成。下面代码将前面的过程关联到新建的菜单项和工具栏上。7页脚内容Excel中如何实现比对不同工作表中相同信息PrivateSubWorkbook_AddinInstall()OnErrorResumeNext'新建菜单WithApplication.CommandBars(1).Controls.Add(Type:=msoControlPopup).Caption="测试(&T)"With.Controls.Add(Type:=msoControlButton).Caption="居中".OnAction="HVCenter"EndWithEndWith'新建工具栏WithApplication.CommandBars.Add(Name:="myCmdbar")msoBarTopWith.Controls.AddaceId.Caption="居中"OnAction"HVCenter"EndWitheEndWith写在AddinInstall事件中,并且在加载宏卸载时随之卸载。下面代码卸载前面创建的工具栏PrivateSubWorkbook_AddinUninstall()OnErrorResumeNextDimctlAsCommandBarControl'卸载工具栏和菜单Application.CommandBars("myCmdbar").DeleteForEachctlInApplication.CommandBars(1).ControlsIfctl.Caption="测试(&T)"Thenctl.Delete四、处理加载宏事件力。具体设计主要应解决两方面问题,一是事件代码本身,二是将预作的“事件代码”和对(1)分析要用的对象和事件7页脚内容Excel中如何实现比对不同工作表中相同信息Workbook对象的SheetSelectionChange的事件。首先使用WithEventsDimWithEventswkbAsWorkbook(2)书写事件代码PrivateSubwkb_SheetSelectionChange(ByValShAsObject,ByValTargetAsRange)Application.StatusBar="你选择的区域:"&Replace(Target.Address,"$","")2.关联对象(1)分析需要关联的所有情况本例,大体我们将需要(改变)关联,即活动工作簿发生变化的情况列示如下:a.当新建工作簿时,关联对象为新建的工作簿b.当新打开工作簿时,关联对象为新打开工作簿c.当在两个工作簿之间切换时,关联对象为新切换到的工作簿(2)完成关联代码DimWithEventsappAsApplicationDimWithEventswkbAsWorkbookPrivateSubapp_NewWorkbook(ByValWbAsWorkbook)Setwkb=WbPrivateSubapp_WorkbookOpen(ByValWbAsWorkbook)Setwkb=WbPrivateSubapp_WorkbookActivate(ByValWbAsWorkbook)Setwkb=WbPrivateSubwkb_SheetSelectionChange(ByValShAsObject,ByValTargetAsRange)Application.StatusBar="你选择的区域:"&Replace(Target.Address,"$","")PrivateSubWorkbook_Open()Setapp=Application可以在上面的Open事件中加入:Setwkb=ActiveWorkbook7页脚内容ExcelExcel中如何实现比对不同工作表中相同信息ThisWorkbook中加入下面的属性过程:PropertyLetActiveWkb(ByValwkAsWorkbook)Setwkb=wkdProper

温馨提示

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

评论

0/150

提交评论