还剩34页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
天马行空____http://t.__.com/tmxk_docinhttp://t.__.com/tmxk_docin;__:13182411__;__群175569632用EX__L__管理信息系统摘要Ex__l97是Windows95环境下的一种电子表格软件可向用户提供史无前例的超强功能和易用性,内嵌有一种VisualBasicforApplication简称VBA超级宏语言,读者在熟练应用Ex__l的基础上,可按用户的需求用VBA建立适用的信息系统 关键词EX__L97VBA管理信息系统(MIS) 目前国内管理信息系统MIS__研制一般采用人们熟悉的dBa___、Foxbase或Foxpro等本文介绍了如何用Ex__l__MIS一般来说一套MIS主要包括信息输入、信息处理、信息输出三大组成部分用Ex__l处理这些部分均显得游刃有余Ex__l是Windows环境下的一种电子表格软件可向用户提供史无前例的超强功能和易用性它同时具有电子数据表、图表和数据库的功能具有极强的分析性能、报表制作工具和丰富的统计图表在本文笔者用中文Ex__l97forWindows__了水电管理系统、销售管理系统、__分析系统充分__到其强大功能和方便性下面详细阐述水电管理系统、销售管理系统、__分析系统的__过程 应用程序一水电计价系统 水电管理是每一个单位每月都要进行的工作下面我们以保定农校水电计价系统为例讲解VBA在水电管理中的应用
1、水电计价系统的功能 本程序具有如下功能 自动计算功能可完成各户水费、电费、合计的计算 自动汇总功能自动汇总全校教职工楼的用电量、用水量及分类汇总 查询功能可查询各户的电表数、水表数、电费数、水费数 报表的打印输出功能 系统保护功能具有口令保护、工作表保护以防非法用户进入和修改
2、程序设计过程
(1)程序总体设计(图1http://___.5tb.com/files/yyrj/i__ge/ex__l
1.png\t_blank)
(2)界面设计 水电计价系统主界面如图2所示(图2http://___.5tb.com/files/yyrj/i__ge/ex__l
6.png\t_blank) 主界面是以EX__L工作表作为输入输出界面 具体设计如下 选定一个工作表并命名为“主界面” 选定单元格区域,把区域颜色设置成你喜欢的颜色 放置命令按钮,并给按钮指定宏 分割区域并冻结,锁定界面使之不能滚动 工作表加密保护使用户不能修改 记录单界面如(图3http://___.5tb.com/files/yyrj/i__ge/ex__l
7.png\t_blank)所示 具体设计过程如下 选定一个工作表并命名为“记录单” 制表(如上图所示) 选定年、月、水表数、电表数空白单元格区域,取消锁定 放置命令按钮,并给按钮指定宏 工作表保护使用户不能修改 主报表如(图4http://___.5tb.com/files/yyrj/i__ge/ex__l
8.png\t_blank、图5http://___.5tb.com/files/yyrj/i__ge/ex__l
9.png\t_blank)所示 具体设计过程如下 选定一个工作表并命名为“主报表” 制表(如上图所示) 纵向冻结A、B两列,横向冻结1-5行 放置命令按钮,并给按钮指定宏 输入公式计算上次表底、本月查表记录、水电用量、水、电费、水电费合计的校内、校外合计、楼房合计、平房合计 在C338单元格输入下面公式,拖动填充柄__公式至L338 =SUMIF$M$6:$M$331=l校内C6:C331+SUMIF$M$6:$M$331=p校内C6:C331 在C339单元格输入下面公式,拖动填充柄__公式至L339 =SUMIF$M$6:$M$331=l校外C6:C331+SUMIF$M$6:$M$331=p校外C6:C331 在C340单元格输入下面公式,拖动填充柄__公式至L340 =SUMIF$M$6:$M$331=l校外C6:C331+SUMIF$M$6:$M$331=l校内C6:C331 在C341单元格输入下面公式,拖动填充柄__公式至L341 =SUMIF$M$6:$M$331=p校外C6:C331+SUMIF$M$6:$M$331=p校内C6:C331 工作表保护使用户不能修改 查表档案界面如(下图http://___.5tb.com/files/yyrj/i__ge/ex__l
10.png\t_blank)所示 具体设计过程如下 选定一个工作表并命名为“档案” 制表(如图6http://___.5tb.com/files/yyrj/i__ge/ex__l
10.png\t_blank所示) 纵向冻结A、B两列,横向冻结1-3行 放置命令按钮,并给按钮指定宏 工作表保护使用户不能修改 查询档案如(下图http://___.5tb.com/files/yyrj/i__ge/ex__l
11.png\t_blank)所示 具体设计过程如下 选定一个工作表并命名为“查询” 制表(如图7http://___.5tb.com/files/yyrj/i__ge/ex__l
11.png\t_blank所示) 纵向冻结A列,横向冻结1-3行 放置命令按钮,并给按钮指定宏 工作表保护使用户不能修改
3、水电计价系统的VBA代码及说明 DimsAsVariant DimyAsVariant DimuAsVariant‘模块级变量声明 Subshuru指定给主界面输入按钮 s=Worksheets主界面.Rangev
1.Value‘获取__ Fory2=1To2 x=InputBox请输入__保定农校水电计价系统 Ifx=sThen Worksheets主界面.Activate ActiveSheet.Unprotect ActiveSheet.DrawingO__ects按钮
2.Select Selection.OnAction=vbb ActiveSheet.DrawingO__ects按钮
3.Select Selection.OnAction=ibda ActiveSheet.DrawingO__ects按钮
5.Select Selection.OnAction=退出 ActiveSheet.DrawingO__ects按钮
4.Select Selection.OnAction=报表查询 ActiveSheet.Protect Worksheets记录单.Activate ExitSub ElseIfx=Then MsgBox请输入__ Else ExitSub EndIf Nexty2 EndSub‘以上是根据__正确与否选择执行代码段 Sub返回1‘指定给返回按钮 Worksheets主界面.Activate EndSub Sub存档指定给记录单上的存档按钮 thecode=vbYesNo+vbDefaultButton2+vbExcla__tion+vbapplicatio__odel MsgBox请对输入进行检查,是否正确?thecode thereply=MsgBoxprompt:=请对输入进行检查,是否正确?Buttons:=thecode SelectCasethereply CasevbYes m=Worksheets记录单.Rangec5 n=Worksheets记录单.Ranged5 IfmAndnThen Worksheets记录单.Rangec5:d
330.Select Selection.Copy ElseIfmAndn=Then Worksheets记录单.Rangec5:c
330.Select Selection.Copy ElseIfm=AndnThen Worksheets记录单.Ranged5:d
330.Select Selection.Copy ElseIfm=Andn=Then ExitSub Else EndIf Worksheets报表.Activate ActiveSheet.Unprotect IfmAndnThen Worksheets报表.Activate Worksheets报表.Rangee
6.Select Selection.PasteSpecial ElseIfmAndn=Then Worksheets报表.Activate Worksheets报表.Rangee
6.Select Selection.PasteSpecial ElseIfm=AndnThen Worksheets报表.Activate Worksheets报表.Rangef
6.Select Selection.PasteSpecial Else EndIf Worksheets档案.Activate y1=Worksheets记录单.Rangec
2.Value x=0 DoUntilz=y1 x=x+1 z=Worksheets档案.__lls2x.Value Loop IfmAndnThen Worksheets档案.__lls4x.Select Selection.PasteSpecial ElseIfm=AndnThen Worksheets档案.__lls4x+
1.Select Selection.PasteSpecial ElseIfmAndn=Then Worksheets档案.__lls4x.Select Selection.PasteSpecial Else EndIf Worksheets主界面.Activate CasevbNo EndSelect ExitSub EndSub‘以上代码是把录入数据存入主报表和查表档案 Sub返回2‘指定给主报表上的返回主界面按钮 ActiveSheet.Unprotect Worksheets主界面.Activate EndSub Sub取电表底‘指定给主报表上的取电表底按钮 y=InputBox请输入电表底(y
012...12)保定农校水电计价系统 ActiveSheet.Unprotect Ify=y0Then Worksheets档案.Activate Rangec4:c
329.Select Selection.Copy Worksheets报表.Activate Rangec
6.Select Selection.PasteSpecial ElseIfy=1Then Worksheets档案.Activate Rangee4:e
329.Select Selection.Copy Worksheets报表.Activate Rangec
6.Select Selection.PasteSpecial ElseIfy=2Then Worksheets档案.Activate Rangeg4:g
329.Select Selection.Copy Worksheets报表.Activate Rangec
6.Select Selection.PasteSpecial ElseIfy=3Then Worksheets档案.Activate Rangei4:i
329.Select Selection.Copy Worksheets报表.Activate Rangec
6.Select Selection.PasteSpecial ElseIfy=4Then Worksheets档案.Activate Rangek4:k
329.Select Selection.Copy Worksheets报表.Activate Rangec
6.Select Selection.PasteSpecial ElseIfy=5Then Worksheets档案.Activate Rangem4:m
329.Select Selection.Copy Worksheets报表.Activate Rangec
6.Select Selection.PasteSpecial ElseIfy=6Then Worksheets档案.Activate Rangeo4:o
329.Select Selection.Copy Worksheets报表.Activate Rangec
6.Select Selection.PasteSpecial ElseIfy=7Then Worksheets档案.Activate Rangeq4:q
329.Select Selection.Copy Worksheets报表.Activate Rangec
6.Select Selection.PasteSpecial ElseIfy=8Then Worksheets档案.Activate Ranges4:s
329.Select Selection.Copy Worksheets报表.Activate Rangec
6.Select Selection.PasteSpecial ElseIfy=9Then Worksheets档案.Activate Rangeu4:u
329.Select Selection.Copy Worksheets报表.Activate Rangec
6.Select Selection.PasteSpecial ElseIfy=10Then Worksheets档案.Activate Rangew4:w
329.Select Selection.Copy Worksheets报表.Activate Rangec
6.Select Selection.PasteSpecial ElseIfy=11Then Worksheets档案.Activate Rangey4:y
329.Select Selection.Copy Worksheets报表.Activate Rangec
6.Select Selection.PasteSpecial ElseIfy=12Then Worksheets档案.Activate Rangeaa4:aa
329.Select Selection.Copy Worksheets报表.Activate Rangec
6.Select Selection.PasteSpecial ElseIfy=Then ActiveSheet.Protect ExitSub Else EndIf WithApplication .Calculation=xlAuto__tic .__xChange=.001 EndWith ActiveWorkbook.PrecisionAsDisplayed=False ActiveSheet.Protect EndSub‘以上代码是使用选择语句从查表档案中取电表底 Sub取水表底‘指定给主报表上的取电表底按钮 ActiveSheet.Unprotect u=InputBox请输入水表底(y
012...12)保定农校水电计价系统 Ifu=y0Then Worksheets档案.Activate Ranged4:d
329.Select Selection.Copy Worksheets报表.Activate Ranged
6.Select Selection.PasteSpecial ElseIfu=1Then Worksheets档案.Activate Rangef4:f
329.Select Selection.Copy Worksheets报表.Activate Ranged
6.Select Selection.PasteSpecial ElseIfu=2Then Worksheets档案.Activate Rangeh4:h
329.Select Selection.Copy Worksheets报表.Activate Ranged
6.Select Selection.PasteSpecial ElseIfu=3Then Worksheets档案.Activate Rangej4:j
329.Select Selection.Copy Worksheets报表.Activate Ranged
6.Select Selection.PasteSpecial ElseIfu=4Then Worksheets档案.Activate Rangel4:l
329.Select Selection.Copy Worksheets报表.Activate Ranged
6.Select Selection.PasteSpecial ElseIfu=5Then Worksheets档案.Activate Rangen4:n
329.Select Selection.Copy Worksheets报表.Activate Ranged
6.Select Selection.PasteSpecial ElseIfu=6Then Worksheets档案.Activate Rangep4:p
329.Select Selection.Copy Worksheets报表.Activate Ranged
6.Select Selection.PasteSpecial ElseIfu=7Then Worksheets档案.Activate Ranger4:r
329.Select Selection.Copy Worksheets报表.Activate Ranged
6.Select Selection.PasteSpecial ElseIfu=8Then Worksheets档案.Activate Ranget4:t
329.Select Selection.Copy Worksheets报表.Activate Ranged
6.Select Selection.PasteSpecial ElseIfu=9Then Worksheets档案.Activate Rangev4:v
329.Select Selection.Copy Worksheets报表.Activate Ranged
6.Select Selection.PasteSpecial ElseIfu=10Then Worksheets档案.Activate Rangex4:x
329.Select Selection.Copy Worksheets报表.Activate Ranged
6.Select Selection.PasteSpecial ElseIfu=11Then Worksheets档案.Activate Rangez4:z
329.Select Selection.Copy Worksheets报表.Activate Ranged
6.Select Selection.PasteSpecial ElseIfu=12Then Worksheets档案.Activate Rangeab4:ab
329.Select Selection.Copy Worksheets报表.Activate Ranged
6.Select Selection.PasteSpecial ElseIfu=Then ActiveSheet.Protect ExitSub Else EndIf WithApplication .Calculation=xlAuto__tic .__xChange=.001 EndWith ActiveWorkbook.PrecisionAsDisplayed=False ActiveSheet.Protect EndSub‘以上代码是使用选择语句从查表档案中取水表底 Subbsy‘由报表存档过程调用 Worksheets主界面.Activate x=3 DoWhileNotIsEmptyWorksheets主界面.__lls11x.Value x=x+1 Loop Worksheets主界面.__lls11x.Value=Worksheets记录单.Rangec2 Worksheets主界面.__lls11x+
1.Value=月 Worksheets主界面.__lls12x.Value=u Worksheets主界面.__lls13x.Value=y Worksheets主界面.__lls12x+
1.Value=月 Worksheets主界面.__lls13x+
1.Value=月 Worksheets报表.Activate Rangec3:f
5.Select Selection.Copy Rangec334:f
336.Select Selection.PasteSpecial Rangea
1.Select ActiveWindow.ScrollRow=6 ActiveSheet.Protect EndSub‘以上代码是把报表月份和表底月份放入主界面上的表格里 Sub返回3指定给返回主界面按钮 ActiveSheet.Unprotect Worksheets主界面.Activate EndSub Sub打印设置‘指定给主界面上的打印设置按钮 WithActiveSheet.PageSetup .PrintTitleRows=$1:$5 .PrintTitleColumns= EndWith ActiveSheet.PageSetup.PrintArea= WithActiveSheet.PageSetup .LeftHeader= .__nterHeader=水电计价系统 .RightHeader=第P页 .LeftFooter= .__nterFooter= .RightFooter= .Left__rgin=Application.InchesToPoints.157480___96063 .Right__rgin=Application.InchesToPoints.157480___96063 .Top__rgin=Application.InchesToPoints.984251968503937 .Bottom__rgin=Application.InchesToPoints.984251968503937 .Header__rgin=Application.InchesToPoints.511811023622047 .Footer__rgin=Application.InchesToPoints.511811023622047 .PrintHeadings=False .PrintGridlines=False .PrintNotes=False .PrintQuality=Array360180 .__nterHorizontally=True .__nterVertically=False .Orientation=xlPortrait .Draft=False .PaperSize=xlPaperUser .FirstPageNumber=xlAuto__tic .Order=xlDownThenOver .BlackAndWhite=False .Zoom=100 EndWith EndSub‘进行打印设置 Subvbb‘指定给主界面上的主报表按钮 Worksheets报表.Activate ActiveSheet.Protect EndSub‘激活主报表 Subibda‘指定给主界面上的报表查询按钮 Worksheets档案.Activate ActiveSheet.Protect EndSub‘激活档案工作表 Sub打印‘指定给主报表上的打印按钮 d=InputBox请选择打印项(“楼房校内=1;楼房校外=2;平房校内=3;平房校外=4”)打印选项窗口 Ifd=1Then ActiveSheet.Unprotect RangeA5:M
331.Advan__dFilterAction:=xlFilterInPla__CriteriaRange_ :=Rangec342:c343Unique:=False ActiveWindow.SelectedSheets.PrintOutCopies:=1 ElseIfd=2Then ActiveSheet.Unprotect RangeA5:M
331.Advan__dFilterAction:=xlFilterInPla__CriteriaRange_ :=Ranged342:d343Unique:=False ActiveWindow.SelectedSheets.PrintOutCopies:=1 ElseIfd=3Then ActiveSheet.Unprotect RangeA5:M
331.Advan__dFilterAction:=xlFilterInPla__CriteriaRange_ :=Rangee342:e343Unique:=False ActiveWindow.SelectedSheets.PrintOutCopies:=1 ElseIfd=4Then ActiveSheet.Unprotect RangeA5:M
331.Advan__dFilterAction:=xlFilterInPla__CriteriaRange_ :=Rangef342:f343Unique:=False ActiveWindow.SelectedSheets.PrintOutCopies:=1 ElseIfd1Ord2Ord3Ord4Then MsgBox打印项选择有误,请重选! Beep ExitSub Else EndIf ActiveSheet.ShowAllData ActiveSheet.Protect EndSub‘进行选项打印 Sub退出‘指定给主界面上的退出按钮 宏2‘系统初始化的逆过程 ActiveSheet.Unprotect ActiveSheet.DrawingO__ects按钮
2.Select Selection.OnAction=‘撤销按钮2的指定宏 ActiveSheet.DrawingO__ects按钮
3.Select Selection.OnAction=‘撤销按钮3的指定宏 ActiveSheet.DrawingO__ects按钮
5.Select Selection.OnAction= ActiveSheet.DrawingO__ects按钮
4.Select Selection.OnAction=‘撤销按钮4的指定宏 ActiveSheet.Protect thecode=vbYesNo+vbDefaultButton2+vbExcla__tion+vbapplicatio__odel thereply=MsgBoxprompt:=是否存盘?(如果不是正式报表请选否!)Buttons:=thecode SelectCasethereply CasevbYes dj=Worksheets报表.Range$g$
278.Value uj=Worksheets报表.Range$h$
278.Value zj=worksheets报表.Range$h$
332.Value da=Worksheets报表.Range$g$
277.Value ub=Worksheets报表.Range$h$
277.Value Ifdj0Oruj0Orda0Orub0Then ActiveWorkbook.S__e ChDrivea:\ ActiveWorkbook.S__eAsFilename:=SHUIDIAN.XLSFileFor__t:=xlNor__l Password:=WriteResPassword:=ReadOnlyRecommended:=FalseCreateBackup:=False Application.Quit Else MsgBox不是正式报表,不予存盘! Application.DisplayAlerts=False Application.Quit EndIf CasevbNo Application.DisplayAlerts=False Application.Quit EndSelect EndSub‘以上是执行退出存盘 Sub初始化‘指定给主界面上的系统初始化按钮 定义界面‘调用定义界面宏改变应用程序标题 Worksheets记录单.Activate Worksheets记录单.Rangec5:d
330.Select Selection.ClearContents Worksheets报表.Activate ActiveSheet.Unprotect Worksheets报表.Rangec6:f
331.Select Selection.ClearContents Worksheets主界面.Activate‘以上代码是清除记录单和报表数据 宏1‘调用宏1 EndSub Sub宏1 WithToolbars1 .Visible=False .Position=xlFloating .Left=__ .Top=67 EndWith WithToolbars2 .Visible=False .Position=xlFloating .Left=79 .Top=78 EndWith ActiveWindow.DisplayWorkbookTabs=False EndSub 宏2__cro ykq记录宏1997/1/10 快捷键:Ctrl+e Sub宏2 ActiveWindow.DisplayWorkbookTabs=True Toolbars
1.Visible=True Toolbars
2.Visible=False WithApplication .ShowToolTips=True .LargeButtons=False .ColorButtons=True EndWith Toolbars
1.Visible=True WithToolbars2 .Visible=True .Position=xlTop EndWith WithApplication .ShowToolTips=True .LargeButtons=False .ColorButtons=True EndWith Toolbars
1.Position=xlTop Worksheets主界面.Activate EndSub Sub定义界面 Application.Caption=保定农校水电计价系统 ActiveWindow.Caption= EndSub 快捷键ctrl+s Sub__‘指定给主界面上的__设置按钮 d=InputBox请输入旧__保定农校水电计价系统 Ifd=Worksheets主界面.Rangev
1.ValueThen Forx=1To2 a=InputBox请输入自定义__保定农校水电计价系统 b=InputBox请重新输入自定义__保定农校水电计价系统 Ifa=bAndaThen c=a Worksheets主界面.Rangev
1.Value=c ExitFor Else MsgBox__输入不正确 EndIf Nextx ElseExitSub EndIf EndSub‘以上代码是设置__ Sub报表查询‘指定给报表查询按钮 Worksheets查询档案.Activate ActiveSheet.Protect EndSub‘以上代码是激活查询档案 Sub返回4‘指定给返回按钮 ActiveSheet.Unprotect‘解除当前工作表保护 Worksheets主界面.Activate EndSub Sub报表存档‘指定给主报表上的报表存档按钮 dj=Range$g$
278.Value uj=Range$h$
278.Value zj=Range$h$
332.Value da=Range$g$
277.Value ub=Range$h$
277.Value Ifdj0Oruj0Orda0Orub0Then ActiveSheet.Unprotect Rangeg5:h331j5:l
331.Select Selection.Copy Worksheets查询档案.Activate x=1 DoWhileNotIsEmptyWorksheets查询档案.__lls3x.Value x=x+1 Loop ActiveSheet.__lls3x.Select Selection.PasteSpecialPaste:=xlValuesOperation:=xlNone_ SkipBlanks:=FalseTranspose:=False Worksheets查询档案.__lls2x.Value=y Worksheets查询档案.__lls2x.Value=Worksheets记录单.Range$c$2 Worksheets查询档案.__lls2x+
1.Value=月 Worksheets主界面.Activate bsy‘调用bsy宏 Else MsgBox不是正式报表,不予存档! ExitSub EndIf EndSub‘以上代码是把报表数据存入查询档案 查询档案清理 快捷键:Ctrl+h Sub宏3‘清理查询档案 Worksheets查询档案.Activate RangeB2:AN
329.Select Selection.ClearContents Rangea
1.Select Worksheets主界面.Activate EndSub 宏4__cro ykq记录宏1997/1/10 档案库清理 快捷键:Ctrl+j Sub宏4‘清理查表档案 Worksheets档案.Activate RangeC4:AB
329.Select Selection.ClearContents Rangea
1.Select Worksheets主界面.Activate EndSub 应用程序二销售管理系统 在商业企业的经营活动中,主要业务活动是进销存本程序主要解决销售的问题,关于进货和库存留给读者自己在原来程序的基础上进一步__
1、销售管理系统的功能 自动计算进货金额、销货金额和毛利 分类汇总功能,可按商品和经手人代码进行分类汇总 打印功能 查询功能(可按商品和经手人代码进行查询)
2、销售管理系统的程序设计 销售管理系统总体设计 界面设计(图8http://___.5tb.com/files/yyrj/i__ge/ex__l
2.png\t_blank) 主界面如(图9http://___.5tb.com/files/yyrj/i__ge/ex__l
12.png\t_blank)所示 界面具体设计过程 选定一工作表,重命名为“主界面” 选定工作表区域,设置区域颜色 在区域内添加应用程序标题和命令按钮 给按钮指定宏 对主界面进行口令保护 分割工作表区域并冻结,以防屏幕滚动 发货单如(图10http://___.5tb.com/files/yyrj/i__ge/ex__l
13.png\t_blank)所示 发货单界面设计过程如下 按图10http://___.5tb.com/files/yyrj/i__ge/ex__l
13.png\t_blank格式制表 放置命令按钮 选定A5C5E5E10A7:F9解锁定 在G7G8G9单元格里依次输入公式=E7*F7=E8*F8=E9*F9úG10单元格里输入=SUMG7:G9 保护工作表 毛利核算表如(图11http://___.5tb.com/files/yyrj/i__ge/ex__l
14.png\t_blank)所示 界面具体设计过程 选定一工作表重命名为“毛利核算” 按图11http://___.5tb.com/files/yyrj/i__ge/ex__l
14.png\t_blank所示制表 在毛利核算表上添加命令按钮并给之指定宏 纵向冻结A、B两列,横向冻结1-3行 对工作表进行保护
3、销售管理系统的VBA代码及说明 Subfhd‘指定给主界面上的发货单按钮 DimxyAsString‘声明过程级变量 Sheetsfhd.Activate x=Sheetsfhd.Rangea
7.Value y=Sheetsfhd.Rangee
10.Value IfxAndyThen Worksheetsmlhs.Activate z=4 DoWhileNotIsEmptySheetsmlhs.__llsz
1.Value z=z+1 Loop Ifz-150Then MsgBox$试用版限处理50笔业务! End Else z1=7 DoWhileNotIsEmptySheetsfhd.__llsz
11.Value z1=z1+1 Loop Forz2=7Toz1-1 __llsz1=Sheetsfhd.__lls105 __llsz2=Sheetsfhd.__lls51-Sheetsfhd.__lls53-Sheetsfhd.__lls55 __llsz3=Sheetsfhd.__llsz21 __llsz4=Sheetsfhd.__llsz22 __llsz5=Sheetsfhd.__llsz23 __llsz6=Sheetsfhd.__llsz26 __llsz7=Sheetsfhd.__llsz24 __llsz9=Sheetsfhd.__llsz25 z=z+1 Nextz2 EndIf Else MsgBox发货单记录不完整,请检查! End EndIf Sheetsfhd.Activate Rangea7:f
9.Select Selection.ClearContents Rangea
7.Select EndSub‘以上代码把发货单数据__到毛利核算表并进行错误自检 Sub计算毛利‘指定给毛利核算表上的计算毛利按钮 Sheetsmlhs.Unprotect Rangeh
4.Select Active__ll.FormulaR1C1==RC[-2]*RC[-1] Selection.AutoFillDestination:=RangeH4:H500Type:=xlFillDefault Rangej
4.Select Active__ll.FormulaR1C1==RC[-4]*RC[-1] Selection.AutoFillDestination:=Rangej4:j500Type:=xlFillDefault Rangek
4.Select Active__ll.FormulaR1C1==RC[-1]-RC[-3] Selection.AutoFillDestination:=Rangek4:k500Type:=xlFillDefault Rangea
1.Select ActiveWindow.__allScrollToRight:=-4 Sheetsmlhs.Protect EndSub‘自动输入公式并自动__ Subdy‘指定给毛利核算表上的打印按钮 Sheetsmlhs.Activate x=4 DoWhileNotIsEmptySheetsmlhs.__llsx
1.Value x=x+1 Loop Range__lls11__llsx
11.Select Selection.PrintOut Rangea
1.Select Sheetsvjm.Activate EndSub‘以上代码是先自动检测报表区域并选定,然后打印输出 Subjrfhd Sheetsfhd.Activate Rangea
1.Select EndSub Subfhvjm Sheetsvjm.Activate Rangea
1000.Select EndSub Subjrmlhs Sheetsmlhs.Activate Rangea
1.Select EndSub Subiax‘指定给主界面和毛利核算表上的查询按钮 DimdAsString d=InputBox请选择查询项(按人查询=1;按商品查询=2)查询选择窗 Ifd=1Then Sheetsmlhs.Select RangeA
4.Select ActiveSheet.Unprotect Selection.SortKey1:=RangeA4Order1:=xlAs__ndingHeader:=_ xlGuessOrderCustom:=1__tchCase:=FalseOrientation:=_ xlTopToBottom Selection.SubtotalGroupBy:=1Function:=xlSumTotalList:=Array8_ 1011Repla__:=TruePageBreaks:=FalseSum__ryBelowData:=_ True Sheetsmlhs.Select ActiveSheet.Outline.ShowLevelsRowLevels:=2 Rangea
1.Select 宏5‘调用宏5过程 ActiveWindow.ScrollColumn=3 Sheetsmlhs.Protect ElseIfd=2Then Sheetsmlhs.Select Selection.RemoveSubtotal Sheetsmlhs.Unprotect Selection.SortKey1:=RangeC4Order1:=xlAs__ndingHeader:=_ xlGuessOrderCustom:=1__tchCase:=FalseOrientation:=_ xlTopToBottom Selection.SubtotalGroupBy:=3Function:=xlSumTotalList:=Array8_ 1011Repla__:=TruePageBreaks:=FalseSum__ryBelowData:=_ True ActiveSheet.Outline.ShowLevelsRowLevels:=2 Rangea
1.Select ActiveWindow.ScrollColumn=3 宏5‘调用宏5 ActiveWindow.ScrollColumn=3 Sheetsmlhs.Protect ElseEnd EndIf EndSub‘按商品和经手人代码查询 Sub宏5‘该过程被查询过程调用 ActiveSheet.DrawingO__ects按钮
5.Select Selection.Characters.Text=移去查询 WithSelection.CharactersStart:=1Length:=
4.Font .Name=宋体 .FontStyle=粗体 .Size=12 .Strikethrough=False .Superscript=False .Subscript=False .OutlineFont=False .Shadow=False .Underline=xlNone .ColorIndex=3 EndWith Selection.OnAction= Selection.OnAction=yqix EndSub‘以上代码是把毛利核算表上的查询按钮变成移去查询按钮并指定yqixoê Subyqix‘指定给毛利核算表上的移去查询按钮 Sheetsmlhs.Select Sheetsmlhs.Unprotect Rangea
3.Select Selection.RemoveSubtotal ActiveSheet.DrawingO__ects按钮
5.Select Selection.Characters.Text=查询 WithSelection.CharactersStart:=1Length:=
4.Font .Name=宋体 .FontStyle=粗体 .Size=12 .Strikethrough=False .Superscript=False .Subscript=False .OutlineFont=False .Shadow=False .Underline=xlNone .ColorIndex=3 EndWith Selection.OnAction= Selection.OnAction=iax Sheetsmlhs.Protect EndSub‘以上代码是先移去分类汇总,然后改移去查询为查询按钮并把iax宏指定给查询按钮 Sub初始化‘指定给主界面上的系统初始化按钮 WithToolbars1 .Visible=False .Position=xlFloating .Left=__ .Top=67 EndWith WithToolbars2 .Visible=False .Position=xlFloating .Left=79 .Top=78 EndWith ActiveWindow.DisplayWorkbookTabs=False EndSub Subykq ActiveWindow.DisplayWorkbookTabs=True Toolbars
1.Visible=True Toolbars
2.Visible=False WithApplication .ShowToolTips=True .LargeButtons=False .ColorButtons=True EndWith Toolbars
1.Visible=True WithToolbars2 .Visible=True .Position=xlTop EndWith WithApplication .ShowToolTips=True .LargeButtons=False .ColorButtons=True EndWith Toolbars
1.Position=xlTop Worksheetsvjm.Activate EndSub Subauto_open‘打开进销存.XLS时自动运行该过程 Application.Caption=进销存管理系统 ActiveWindow.Caption= EndSub‘设置应用程序标题为“进销存管理系统” Subtui‘指定给主界面上的退出按钮 thecode=vbYesNo+vbDefaultButton2+vbExcla__tion+vbapplicatio__odel thereply=MsgBoxprompt:=是否保存?Buttons:=thecode SelectCasethereply CasevbYes ActiveWorkbook.S__e ChDrivea:\‘改变驱动器 ActiveWorkbook.S__eAsFilename:=进销存.XLSFileFor__t:=xlNor__l_Password:=WriteResPassword:=ReadOnlyRecommended:=_ FalseCreateBackup:=False‘另存为A盘 Application.Quit‘退出 CasevbNo Application.Quit EndSelect EndSub‘该过程执行退出和保存 Sub清库‘指定给毛利核算表上的清库按钮 Sheetsmlhs.Unprotect Rangea4:k
500.Select Selection.ClearContents Rangea
1.Select Sheetsmlhs.Protect EndSub‘清除毛利核算表上的数据 Subziax Sheetsmlhs.Activate Rangea
4.Select iax EndSub 宏8__cro bdnx记录宏1997-11-26 Sub宏8‘进行打印设置 WithActiveSheet.PageSetup .PrintTitleRows=$2:$3 .PrintTitleColumns= EndWith ActiveSheet.PageSetup.PrintArea= WithActiveSheet.PageSetup .LeftHeader= .__nterHeader=进销存 .RightHeader=第P页 .LeftFooter= .__nterFooter= .RightFooter= .Left__rgin=Application.InchesToPoints.7480___96062992 .Right__rgin=Application.InchesToPoints.7480___96062992 .Top__rgin=Application.InchesToPoints.984251968503937 .Bottom__rgin=Application.InchesToPoints.984251968503937 .Header__rgin=Application.InchesToPoints.511811023622047 .Footer__rgin=Application.InchesToPoints.511811023622047 .PrintHeadings=False .PrintGridlines=False .PrintNotes=False .PrintQuality=180 .__nterHorizontally=True .__nterVertically=True .Orientation=xlPortrait .Draft=False .PaperSize=xlPaperUser .FirstPageNumber=xlAuto__tic .Order=xlDownThenOver .BlackAndWhite=False .Zoom=100 EndWith EndSub Sub宏7‘指定给主界面上的分类汇总按钮 Sheetsmlhs.Activate Application.Run__cro:=进销存.xls!计算毛利 Sheetsmlhs.Unprotect RangeC
3.Select Selection.SortKey1:=RangeC4Order1:=xlAs__ndingHeader:=_ xlGuessOrderCustom:=1__tchCase:=FalseOrientation:=_ xlTopToBottom Selection.SubtotalGroupBy:=3Function:=xlSumTotalList:=Array6_ 81011Repla__:=TruePageBreaks:=FalseSum__ryBelowData_ :=True ActiveSheet.Outline.ShowLevelsRowLevels:=2 RangeA:BD:DG:G.Select RangeG
1.Activate Selection.EntireColumn.Hidden=True ColumnsC:C.Select Selection.Columns.AutoFit ColumnsE:E.Select Selection.EntireColumn.Hidden=False Columnsf:f.Select Selection.EntireColumn.Hidden=False RangeC
3.Select MsgBox请修改后再打印! ActiveSheet.DrawingO__ects按钮
6.Select Selection.OnAction=打印分类核算表 RangeC
3.Select EndSub‘执行按商品进行分类汇总 Sub打印分类核算表‘指定给毛利核算表上的打印按钮 ColumnsC:C.Select Selection.Columns.AutoFit Rangec
3.Select ActiveWindow.SelectedSheets.PrintOutCopies:=2 ActiveSheet.Unprotect Selection.RemoveSubtotal __lls.Select Selection.EntireColumn.Hidden=False ActiveSheet.DrawingO__ects按钮
6.Select Selection.OnAction= RangeA
3.Select Sheetsmlhs.Protect EndSub‘打印分类汇总结果 快捷键:Ctrl+h Subdykjj‘设置打印快捷键 宏7 EndSub 快捷键:Ctrl+s Subfhdkjj‘设置发货单存档快捷键 fhd EndSub 应用程序三__分析系统
1、__分析系统的功能 自动统计全班人数、缺考人数、实考人数、优、良、及格、不及格人数 自动计算平均成绩、不及格率、各成绩段人数百分比 自动绘制成绩分布曲线 打印功能可打印成绩单和__分析表
2、程序设计过程 __分析系统的总体设计 界面设计 主界面如图12http://___.5tb.com/files/yyrj/i__ge/ex__l
15.png\t_blank所示 主界面具体设计过程 选定一个工作表并命名为“主界面” 选定单元格区域,把区域颜色设置成你喜欢的颜色 放置命令按钮,并给按钮指定宏 分割区域并冻结,锁定界面使之不能滚动 工作表加密保护使用户不能修改 成绩单界面如图13http://___.5tb.com/files/yyrj/i__ge/ex__l
16.png\t_blank所示 界面具体设计过程如下 选定一个工作表并命名为“成绩单” 制表(如图13http://___.5tb.com/files/yyrj/i__ge/ex__l
16.png\t_blank所示) 选定“考试”空白单元格区域,取消锁定 放置命令按钮,并给按钮指定宏 输入函数在F4L4两个单元格里分别输入“=IFANDC460C4不及格IFANDC4=60C4=
74.9及格IFANDC490C4=75良IFANDC4=100C4=90优IFC4=*缺考”,在C29里输入公式统计全班人数“=50-COUNTBLANKC4:C28-COUNTBLANKI4:I28”,在F29输入公式“=COUNTIF成绩单!$C$4:$C$28=*+COUNTIF成绩单!$I$4:$I$28=*,在I29输入公式“=C29-F29”计算实考人数在D30单元格里输入公式“=COUNTIF$F$4:$F$28=优+COUNTIF$L$4:$L$28=优”计算优的人数,在D31单元格里输入公式“=COUNTIF$F$4:$F$28=良+COUNTIF$L$4:$L$28=良”计算良的人数,在I30单元格里输入公式“=COUNTIF$F$4:$F$28=及格+COUNTIF$L$4:$L$28=及格”计算及格的人数,在I31单元格里输入公式“=COUNTIF$F$4:$F$28=不及格+COUNTIF$L$4:$L$28=不及格”计算不及格的人数, 工作表保护使用户不能修改 __分析打印界面如图14http://___.5tb.com/files/yyrj/i__ge/ex__l
4.png\t_blank所示 界面具体设计过程如下 选定一个工作表并命名为“打印界面” 选定单元格区域,把区域颜色设置成你喜欢的颜色 放置命令按钮,并给按钮指定宏 分割区域并冻结,锁定界面使之不能滚动 工作表加密保护使用户不能修改 __分析界面如图15http://___.5tb.com/files/yyrj/i__ge/ex__l
5.png\t_blank所示 界面具体设计过程 选定一个工作表并命名为“__分析” 制表(如图15http://___.5tb.com/files/yyrj/i__ge/ex__l
5.png\t_blank所示) 放置命令按钮,并给按钮指定宏 选定G4:P4G7:P7绘制折线图 在单元格输入公式 A6:=__ERAGE成绩单!C4:C28成绩单!I4:I28 B6:=__X成绩单!$C$4:$C$28成绩单!$I$4:$I$28 C6:=MIN成绩单!$C$4:$C$28成绩单!$I$4:$I$28 D6:=COUNTIF成绩单!$C$4:$C$2860+COUNTIF成绩单!$I$4:$I$2860 E6:=D6/N8 G6:=COUNTIF成绩单!C4:C28=9+COUNTIF成绩单!I4:I28=9 H6:=COUNTIF成绩单!C4:C28=19+COUNTIF成绩单!I4:I28=19-G6 I6:=COUNTIF成绩单!C4:C28=29+COUNTIF成绩单!I4:I28=29-H6-G6 J6:=COUNTIF成绩单!C4:C28=39+COUNTIF成绩单!I4:I28=39-I6-H6-G6 K6:=COUNTIF成绩单!C4:C28=49+COUNTIF成绩单!I4:I28=49-J6-I6-H6-G6 L6:=N8-SUMG6:K6M6:P6 M6:=COUNTIF成绩单!C4:C28=60+COUNTIF成绩单!I4:I28=60-__分析!N6-__分析!O6-__分析!P6 N6:=COUNTIF成绩单!C4:C28=70+COUNTIF成绩单!I4:I28=70-__分析!P6-__分析!O6 O6:=COUNTIF成绩单!C4:C28=80+COUNTIF成绩单!I4:I28=80-__分析!P6 P6:=COUNTIF成绩单!C4:C28=90+COUNTIF成绩单!I4:I28=90 G7:=G6/$N$8并选定G7单元格拖动填充柄__至P7单元格 C8:=成绩单!C29 H8:=成绩单!C29 N8:=C8-H8 工作表保护使用户不能修改 姓名库界面图16http://___.5tb.com/files/yyrj/i__ge/ex__l
18.png\t_blank所示 界面具体设计过程如下 选定一个工作表并命名为“姓名库” 制表(如图16http://___.5tb.com/files/yyrj/i__ge/ex__l
18.png\t_blank所示)
3、__分析程序的VBA代码及说明 Sub宏1‘指定给主界面上的成绩录入按钮 Sheets成绩单.Select‘激活成绩单工作表 EndSub Sub宏2‘指定给主界面上的分析按钮 Application.__xChange=.001 ActiveWorkbook.PrecisionAsDisplayed=False Calculate‘执行自动计算 EndSub Sub宏4‘指定给主界面上的打印按钮 Sheets打印界面.Select‘激活打印界面工作表 EndSub Sub宏5‘指定给打印界面上的打印成绩单按钮 Sheets成绩单.Select ActiveWindow.SelectedSheets.PrintOutCopies:=1 EndSub‘打印成绩单 Sub宏6‘指定给打印界面上的打印__分析按钮 Sheets__分析.Select ActiveWindow.SelectedSheets.PrintOutCopies:=1 EndSub Sub宏7‘指定给返回按钮 Sheets主界面.Select EndSub‘返回主界面 Sub宏11‘指定给主界面上的帮助按钮 Sheets帮助窗口.Select‘激活帮助工作表界面 EndSub Suburxm‘指定给成绩单界面上的返回主界面按钮 Dim__jAsString __j=Workbooksujfx.xls.Worksheets成绩单.Rangec
2.Value If__j=财1Then Worksheets姓名库.Rangea3:a
27.Copydestination:=Worksheets成绩单.Rangeb4:b28 Worksheets姓名库.Rangeb3:b
27.Copydestination:=Worksheets成绩单.Rangeh4:h28 ElseIf__j=财2Then Worksheets姓名库.Rangec3:c
27.Copydestination:=Worksheets成绩单.Rangeb4:b28 Worksheets姓名库.Ranged3:d
27.Copydestination:=Worksheets成绩单.Rangeh4:h28 ElseIf__j=Then Worksheets姓名库.Rangea100:a
124.Copydestination:=Worksheets成绩单.Rangeb4:b28 Worksheets姓名库.Rangeb100:b
124.Copydestination:=Worksheets成绩单.Rangeh4:h28 Else EndIf fanhui‘调用FANHUI宏 EndSub‘以上代码是根据成绩单上C2单元格的值用选择语句从姓名库里取姓名,然后放到成绩单的相应单元格里 Subfanhui Worksheets主界面.Activate EndSub 下面就信息输入、信息处理、信息输出界面设计、代码设计和数据保护等方面的问题作一小结
一、信息输入 最常用的信息输入方法有三种一是在工作表WorkSheets的单元格__lls中直接输入文字和数据重复数据可由填充把柄拖拉而得;二是采用输入框InputBox输入少量数据;三是自行设计对话窗体Forms在其上可加入标签框、文本框、列表框、分组框、选择框、滚动条和命令按钮等然后设计其对象格式如属性、保护、控制项、对齐、字体和图案等当然Windows提供的剪裁板进行数据的__或粘贴也不失为一种常用的方法此外Ex__l还提供了强大的文件转换功能可将___文件、dBase、Lotus1-2-3文件、QuattroPro文件、MSWork文件、SYLK文件、DIF文件等直接转换为Ex__l工作簿文件这就为数据的共享、快速录入及转换提供了极大的方便
二、信息处理 按行业的不同信息处理的要求有较大的差别常用的信息处理包括数据的修改、查询、检索、排序和统计汇总在dBase中这些工作一般需要编程设计而在Ex__l中几乎所有的工作均可由Ex__l本身提供的功能轻松地完成最常用的是右端数据菜单中的各项功能∶记录单选项提供了数据库记录查询、输入、修改或删除的简单方法;排序选项提供了数据库记录同时按三个字段的排序方法可以按行或按列、以升序或降序、考虑或不考虑大写来进行排序;筛选选项提供了隐藏除符合指定条件外的所有数据的方法为数据库同类记录的查询和重点显示提供了方便;分类汇总选项提供了同类数据的汇总及统计方法;数据透视表选项可以迅速使一个复杂的表格变得容易阅读和理解它可以方便地概括出感兴趣的字段从不同的角度透视出求和值、计数值、平均值、最大值、最小值、乘积值、标准偏差、总体标准偏差、变异值、总体变异值 表格设计是MIS的重点和难点之一然而在Ex__l中表格设计却易如反掌Ex__l的工作簿WorkBooks是一个三维电子表格一个工作簿由若干个工作表构成每个工作表本身就是一张表格它最多可达16384行256列足以满足表格设计的需要表格中每一行的高度和每一列的宽度均可随意调节多余的行和列可以隐藏起来表格中的每个单元格可有不同的字体、字号、边框线、前景色、数据格式、对齐方式和保护方式在每个单元格中还可插入不同的文字附注和声音附注此外在每个工作表中可任意绘制直线、曲线、矩形、椭圆、箭头和各种窗体控件Controls并且还可插入其他Windows应用程序的__和对象支持DDL和OLEEx__l的这些功能为灵活设计各种复杂的表格提供了极大的方便 统计图表是各类MIS的特色之一能否设计出美观易懂的图表从一个方面反映了MIS生命力的强弱Ex__l的作图能力特别强大操作使用方便它可从工作表中灵活地提取所需的数据快速生成二维或三维的条形图、柱形图、饼图、环形图、散列图、曲面图、雷达图等
三、信息输出 Ex__l具有所见即所得的功能凡是在工作表上能显示出来的内容文字、数据、图形、图表均可打印出来超宽表格可以自动分页打印;其打印选项十分丰富完全不需要自己编写另外的打印驱动代码
四、界面制作 在Ex__l中MIS的界面既可采用对话窗体进行设计也可在工作表上直接进行设计窗体的各种控件可随意放置在工作表上在录制或编写了宏代码后还可根据自己的需要任意修改Ex__l的菜单、工具箱以及提示行显示信息而隐藏Ex__l本身的菜单系统使MIS仿佛脱离了Ex__l处于单独运行之中 为了在进入Windows的同时就进入MIS界面可在Windows的初始化文件WIN.INI中加入LOAD=C:\Ex__l5\Ex__l.EXE/E在C:Ex__l5\XLSTART子目录中加入MIS的界面控制程序这样将在启动Windows的同时直接进入Ex__l环境并启动MIS的操作界面而不显示Ex__l的启动封面;Auto-Open是含有特殊含义的子程序名称它可在打开工作簿的同时运行Auto-Open中的语句
五、代码设计 对于简单的MIS一般不需要进行代码设计用Ex__l本身提供的各项功能就可满足要求除具有通用的工作表函数外Ex__l还提供了丰富的日期和时间函数、财务分析函数、统计分析函数和假设分析函数例如在B1单元格输入公式=__ERAGEA1:A9就可直接求出从A1到A9中各单元数据的平均值 然而对于比较复杂的MIS则必须使用Ex__l的编程语言VisualBasicforApplicationVBA也就是Ex__l的宏VBA直接嵌入Ex__l的工作簿中其语法规则非常类似于VisualBasic比较容易掌握VBA包含丰富的各种函数、方法、对象、属性和语句理解并逐步掌握VBA中数量庞大的各类方法、对象和属性是在Ex__l平台上进行二次__的关键技术Ex__l的所有菜单操作均可通过VBA编程实现此外VBA还可以实现Ex__l本身不具备的功能如API函数的调用利用Ex__l提供的录制宏功能是初步学习VBA的简捷方法熟悉VBA之后就可自己修改宏并编写新的宏需要说明的是中文Ex__l的宏支持汉字过程名和变量名这就为程序的阅读和维护带来了便利
六、数据保护 MIS的数据保护能力是用户和软件__人员共同关心的问题用dBase__的MIS往往需要为设计数据库的保密功能而绞尽脑汁然而在Ex__l中您不必编写任何程序代码就可达到数据保护的目的Ex__l为用户提供了多级保护手段可以自行选择是否保护每个单元格或每个控件是否保护某张工作表是否保护每个工作簿是否需要输入打开工作簿的口令一般而言打开工作簿的口令由用户设定其他保护功能由程序设计人员设定一经设置了保护功能任何人包括程序设计者在不知道口令的情况下均无法越权使用 Ex__l内置的强大功能以及提供的二次__平台为快速、简便地__出具有专业水平的MIS提供了高效的手段其众多功能在本文无法逐一涉及尚需读者在使用中摸索。