怎样用EXCEL开发管理信息系统.docx

上传人:小飞机 文档编号:1857681 上传时间:2022-12-22 格式:DOCX 页数:36 大小:168.66KB
返回 下载 相关 举报
怎样用EXCEL开发管理信息系统.docx_第1页
第1页 / 共36页
怎样用EXCEL开发管理信息系统.docx_第2页
第2页 / 共36页
怎样用EXCEL开发管理信息系统.docx_第3页
第3页 / 共36页
怎样用EXCEL开发管理信息系统.docx_第4页
第4页 / 共36页
怎样用EXCEL开发管理信息系统.docx_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《怎样用EXCEL开发管理信息系统.docx》由会员分享,可在线阅读,更多相关《怎样用EXCEL开发管理信息系统.docx(36页珍藏版)》请在三一办公上搜索。

1、 用EXCEL开发管理信息系统摘 要:Excel97是Windows95环境下的一种电子表格软件,可向用户提供史无前例的超强功能和易用性,内嵌有一种Visual Basic for Application(简称VBA)超级宏语言,读者在熟练应用Excel的基础上,可按用户的需求用VBA建立适用的信息系统。关键词:EXCEL97 VBA 管理信息系统(MIS)目前国内管理信息系统(MIS)开发研制一般采用人们熟悉的dBaseX、Foxbase或Foxpro等,本文介绍了如何用Excel开发MIS。一般来说,一套MIS主要包括信息输入、信息处理、信息输出三大组成部分,用Excel处理这些部分均显得

2、游刃有余。Excel是Windows环境下的一种电子表格软件,可向用户提供史无前例的超强功能和易用性。它同时具有电子数据表、图表和数据库的功能,具有极强的分析性能、报表制作工具和丰富的统计图表。在本文笔者用中文Excel97 for Windows开发了水电管理系统、销售管理系统、试卷分析系统。充分感受到其强大功能和方便性。下面详细阐述水电管理系统、销售管理系统、试卷分析系统的开发过程。应用程序一:水电计价系统水电管理是每一个单位每月都要进行的工作。 下面我们以保定农校水电计价系统为例讲解VBA在水电管理中的应用。1、 水电计价系统的功能本程序具有如下功能:自动计算功能:可完成各户水费、电费、

3、合计的计算。自动汇总功能:自动汇总全校教职工楼的用电量、用水量及分类汇总。查询功能:可查询各户的电表数、水表数、电费数、水费数。报表的打印输出功能。系统保护功能:具有口令保护、工作表保护以防非法用户进入和修改。2、 程序设计过程(1)程序总体设计(图1)(2)界面设计水电计价系统主界面如图2所示。(图2)主界面是以EXCEL工作表作为输入输出界面。具体设计如下:选定一个工作表并命名为“主界面”。选定单元格区域,把区域颜色设置成你喜欢的颜色。放置命令按钮,并给按钮指定宏。分割区域并冻结,锁定界面使之不能滚动。工作表加密保护使用户不能修改。记录单界面如(图3)所示。具体设计过程如下:选定一个工作表

4、并命名为“记录单”。制表(如上图所示 )。选定年、月、水表数、电表数空白单元格区域,取消锁定。放置命令按钮,并给按钮指定宏。工作表保护使用户不能修改。主报表如(图4、图5)所示。具体设计过程如下:选定一个工作表并命名为“主报表”。制表(如上图所示 )。纵向冻结A、B两列,横向冻结1-5行。放置命令按钮,并给按钮指定宏。输入公式:计算上次表底、本月查表记录、水电用量、水、电费、水电费合计的校内、校外合计、楼房合计、平房合计。在C338单元格输入下面公式,拖动填充柄复制公式至L338。=SUMIF($M$6:$M$331,=l校内,C6:C331)+SUMIF($M$6:$M$331,=p校内,C

5、6: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)工作表保护使用户不能

6、修改。查表档案界面如(下图)所示:具体设计过程如下:选定一个工作表并命名为“档案”。制表(如图6所示 )。纵向冻结A、B两列,横向冻结1-3行。放置命令按钮,并给按钮指定宏。工作表保护使用户不能修改。查询档案如(下图)所示:具体设计过程如下:选定一个工作表并命名为“查询”。制表(如图7所示 )。纵向冻结A列,横向冻结1-3行。放置命令按钮,并给按钮指定宏。工作表保护使用户不能修改。(3)、水电计价系统的VBA代码及说明Dim s As VariantDim y As VariantDim u As Variant 模块级变量声明Sub shuru() ?指定给主界面输入按钮s = Worksh

7、eets(主界面).Range(v1).Value 获取密码For y2 = 1 To 2x = InputBox(请输入密码:, 保定农校水电计价系统)If x = s ThenWorksheets(主界面).ActivateActiveSheet.UnprotectActiveSheet.DrawingObjects(按钮 2).SelectSelection.OnAction = vbbActiveSheet.DrawingObjects(按钮 3).SelectSelection.OnAction = ibdaActiveSheet.DrawingObjects(按钮 5).Selec

8、tSelection.OnAction = 退出ActiveSheet.DrawingObjects(按钮 4).SelectSelection.OnAction = 报表查询ActiveSheet.ProtectWorksheets(记录单).ActivateExit SubElseIf x = ThenMsgBox 请输入密码ElseExit SubEnd IfNext y2End Sub 以上是根据密码正确与否选择执行代码段Sub 返回1() 指定给返回按钮Worksheets(主界面).ActivateEnd SubSub 存档() ?指定给记录单上的存档按钮thecode = vbY

9、esNo + vbDefaultButton2 + vbExclamation + vbapplicationmodelMsgBox 请对输入进行检查,是否正确?, thecodethereply = MsgBox(prompt:=请对输入进行检查,是否正确?, Buttons:=thecode)Select Case thereplyCase vbYesm = Worksheets(记录单).Range(c5)n = Worksheets(记录单).Range(d5)If m And n ThenWorksheets(记录单).Range(c5:d330).SelectSelection.C

10、opyElseIf m And n = ThenWorksheets(记录单).Range(c5:c330).SelectSelection.CopyElseIf m = And n ThenWorksheets(记录单).Range(d5:d330).SelectSelection.CopyElseIf m = And n = ThenExit SubElseEnd IfWorksheets(报表).ActivateActiveSheet.UnprotectIf m And n ThenWorksheets(报表).ActivateWorksheets(报表).Range(e6).Selec

11、tSelection.PasteSpecialElseIf m And n = ThenWorksheets(报表).ActivateWorksheets(报表).Range(e6).SelectSelection.PasteSpecialElseIf m = And n ThenWorksheets(报表).ActivateWorksheets(报表).Range(f6).SelectSelection.PasteSpecialElseEnd IfWorksheets(档案).Activatey1 = Worksheets(记录单).Range(c2).Valuex = 0Do Until

12、z = y1x = x + 1z = Worksheets(档案).Cells(2, x).ValueLoopIf m And n ThenWorksheets(档案).Cells(4, x).SelectSelection.PasteSpecialElseIf m = And n ThenWorksheets(档案).Cells(4, x + 1).SelectSelection.PasteSpecialElseIf m And n = ThenWorksheets(档案).Cells(4, x).SelectSelection.PasteSpecialElseEnd IfWorksheet

13、s(主界面).ActivateCase vbNoEnd SelectExit SubEnd Sub 以上代码是把录入数据存入主报表和查表档案Sub 返回2() 指定给主报表上的返回主界面按钮ActiveSheet.UnprotectWorksheets(主界面).ActivateEnd SubSub 取电表底() 指定给主报表上的取电表底按钮y = InputBox(请输入电表底(y0,1,2.12):, 保定农校水电计价系统)ActiveSheet.UnprotectIf y = y0 ThenWorksheets(档案).ActivateRange(c4:c329).SelectSelec

14、tion.CopyWorksheets(报表).ActivateRange(c6).SelectSelection.PasteSpecialElseIf y = 1 ThenWorksheets(档案).ActivateRange(e4:e329).SelectSelection.CopyWorksheets(报表).ActivateRange(c6).SelectSelection.PasteSpecialElseIf y = 2 ThenWorksheets(档案).ActivateRange(g4:g329).SelectSelection.CopyWorksheets(报表).Acti

15、vateRange(c6).SelectSelection.PasteSpecialElseIf y = 3 ThenWorksheets(档案).ActivateRange(i4:i329).SelectSelection.CopyWorksheets(报表).ActivateRange(c6).SelectSelection.PasteSpecialElseIf y = 4 ThenWorksheets(档案).ActivateRange(k4:k329).SelectSelection.CopyWorksheets(报表).ActivateRange(c6).SelectSelectio

16、n.PasteSpecialElseIf y = 5 ThenWorksheets(档案).ActivateRange(m4:m329).SelectSelection.CopyWorksheets(报表).ActivateRange(c6).SelectSelection.PasteSpecialElseIf y = 6 ThenWorksheets(档案).ActivateRange(o4:o329).SelectSelection.CopyWorksheets(报表).ActivateRange(c6).SelectSelection.PasteSpecialElseIf y = 7 T

17、henWorksheets(档案).ActivateRange(q4:q329).SelectSelection.CopyWorksheets(报表).ActivateRange(c6).SelectSelection.PasteSpecialElseIf y = 8 ThenWorksheets(档案).ActivateRange(s4:s329).SelectSelection.CopyWorksheets(报表).ActivateRange(c6).SelectSelection.PasteSpecialElseIf y = 9 ThenWorksheets(档案).ActivateRa

18、nge(u4:u329).SelectSelection.CopyWorksheets(报表).ActivateRange(c6).SelectSelection.PasteSpecialElseIf y = 10 ThenWorksheets(档案).ActivateRange(w4:w329).SelectSelection.CopyWorksheets(报表).ActivateRange(c6).SelectSelection.PasteSpecialElseIf y = 11 ThenWorksheets(档案).ActivateRange(y4:y329).SelectSelecti

19、on.CopyWorksheets(报表).ActivateRange(c6).SelectSelection.PasteSpecialElseIf y = 12 ThenWorksheets(档案).ActivateRange(aa4:aa329).SelectSelection.CopyWorksheets(报表).ActivateRange(c6).SelectSelection.PasteSpecialElseIf y = ThenActiveSheet.ProtectExit SubElseEnd IfWith Application.Calculation = xlAutomati

20、c.MaxChange = .001End WithActiveWorkbook.PrecisionAsDisplayed = FalseActiveSheet.ProtectEnd Sub 以上代码是使用选择语句从查表档案中取电表底Sub 取水表底() 指定给主报表上的取电表底按钮ActiveSheet.Unprotectu = InputBox(请输入水表底(y0,1,2.12):, 保定农校水电计价系统)If u = y0 ThenWorksheets(档案).ActivateRange(d4:d329).SelectSelection.CopyWorksheets(报表).Activa

21、teRange(d6).SelectSelection.PasteSpecialElseIf u = 1 ThenWorksheets(档案).ActivateRange(f4:f329).SelectSelection.CopyWorksheets(报表).ActivateRange(d6).SelectSelection.PasteSpecialElseIf u = 2 ThenWorksheets(档案).ActivateRange(h4:h329).SelectSelection.CopyWorksheets(报表).ActivateRange(d6).SelectSelection.

22、PasteSpecialElseIf u = 3 ThenWorksheets(档案).ActivateRange(j4:j329).SelectSelection.CopyWorksheets(报表).ActivateRange(d6).SelectSelection.PasteSpecialElseIf u = 4 ThenWorksheets(档案).ActivateRange(l4:l329).SelectSelection.CopyWorksheets(报表).ActivateRange(d6).SelectSelection.PasteSpecialElseIf u = 5 The

23、nWorksheets(档案).ActivateRange(n4:n329).SelectSelection.CopyWorksheets(报表).ActivateRange(d6).SelectSelection.PasteSpecialElseIf u = 6 ThenWorksheets(档案).ActivateRange(p4:p329).SelectSelection.CopyWorksheets(报表).ActivateRange(d6).SelectSelection.PasteSpecialElseIf u = 7 ThenWorksheets(档案).ActivateRang

24、e(r4:r329).SelectSelection.CopyWorksheets(报表).ActivateRange(d6).SelectSelection.PasteSpecialElseIf u = 8 ThenWorksheets(档案).ActivateRange(t4:t329).SelectSelection.CopyWorksheets(报表).ActivateRange(d6).SelectSelection.PasteSpecialElseIf u = 9 ThenWorksheets(档案).ActivateRange(v4:v329).SelectSelection.C

25、opyWorksheets(报表).ActivateRange(d6).SelectSelection.PasteSpecialElseIf u = 10 ThenWorksheets(档案).ActivateRange(x4:x329).SelectSelection.CopyWorksheets(报表).ActivateRange(d6).SelectSelection.PasteSpecialElseIf u = 11 ThenWorksheets(档案).ActivateRange(z4:z329).SelectSelection.CopyWorksheets(报表).Activate

26、Range(d6).SelectSelection.PasteSpecialElseIf u = 12 ThenWorksheets(档案).ActivateRange(ab4:ab329).SelectSelection.CopyWorksheets(报表).ActivateRange(d6).SelectSelection.PasteSpecialElseIf u = ThenActiveSheet.ProtectExit SubElseEnd IfWith Application.Calculation = xlAutomatic.MaxChange = .001End WithActi

27、veWorkbook.PrecisionAsDisplayed = FalseActiveSheet.ProtectEnd Sub 以上代码是使用选择语句从查表档案中取水表底Sub bsy() 由报表存档过程调用Worksheets(主界面).Activatex = 3Do While Not (IsEmpty(Worksheets(主界面).Cells(11, x).Value)x = x + 1LoopWorksheets(主界面).Cells(11, x).Value = Worksheets(记录单).Range(c2)Worksheets(主界面).Cells(11, x + 1).

28、Value = 月Worksheets(主界面).Cells(12, x).Value = uWorksheets(主界面).Cells(13, x).Value = yWorksheets(主界面).Cells(12, x + 1).Value = 月Worksheets(主界面).Cells(13, x + 1).Value = 月Worksheets(报表).ActivateRange(c3:f5).SelectSelection.CopyRange(c334:f336).SelectSelection.PasteSpecialRange(a1).SelectActiveWindow.S

29、crollRow = 6ActiveSheet.ProtectEnd Sub 以上代码是把报表月份和表底月份放入主界面上的表格里Sub 返回3() ?指定给返回主界面按钮ActiveSheet.UnprotectWorksheets(主界面).ActivateEnd SubSub 打印设置() 指定给主界面上的打印设置按钮With ActiveSheet.PageSetup.PrintTitleRows = $1:$5.PrintTitleColumns = End WithActiveSheet.PageSetup.PrintArea = With ActiveSheet.PageSetup

30、.LeftHeader = .CenterHeader = 水电计价系统.RightHeader = 第 &P 页.LeftFooter = .CenterFooter = .RightFooter = .LeftMargin = Application.InchesToPoints(.15748031496063).RightMargin = Application.InchesToPoints(.15748031496063).TopMargin = Application.InchesToPoints(.984251968503937).BottomMargin = Applicatio

31、n.InchesToPoints(.984251968503937).HeaderMargin = Application.InchesToPoints(.511811023622047).FooterMargin = Application.InchesToPoints(.511811023622047).PrintHeadings = False.PrintGridlines = False.PrintNotes = False.PrintQuality = Array(360, 180).CenterHorizontally = True.CenterVertically = False

32、.Orientation = xlPortrait.Draft = False.PaperSize = xlPaperUser.FirstPageNumber = xlAutomatic.Order = xlDownThenOver.BlackAndWhite = False.Zoom = 100End WithEnd Sub 进行打印设置Sub vbb() 指定给主界面上的主报表按钮Worksheets(报表).ActivateActiveSheet.ProtectEnd Sub 激活主报表Sub ibda() 指定给主界面上的报表查询按钮Worksheets(档案).ActivateAct

33、iveSheet.ProtectEnd Sub 激活档案工作表Sub 打印() 指定给主报表上的打印按钮d = InputBox(请选择打印项(“楼房校内1;楼房校外2;平房校内3;平房校外4”):, 打印选项窗口)If d = 1 ThenActiveSheet.UnprotectRange(A5:M331).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange _:=Range(c342:c343), Unique:=FalseActiveWindow.SelectedSheets.PrintOut Copies:=1ElseIf d

34、= 2 ThenActiveSheet.UnprotectRange(A5:M331).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange _:=Range(d342:d343), Unique:=FalseActiveWindow.SelectedSheets.PrintOut Copies:=1ElseIf d = 3 ThenActiveSheet.UnprotectRange(A5:M331).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange _:=Range(e342:e

35、343), Unique:=FalseActiveWindow.SelectedSheets.PrintOut Copies:=1ElseIf d = 4 ThenActiveSheet.UnprotectRange(A5:M331).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange _:=Range(f342:f343), Unique:=FalseActiveWindow.SelectedSheets.PrintOut Copies:=1ElseIf d 1 Or d 2 Or d 3 Or d 4 ThenMsgBox 打印项选择

36、有误,请重选!BeepExit SubElseEnd IfActiveSheet.ShowAllDataActiveSheet.ProtectEnd Sub 进行选项打印Sub 退出() 指定给主界面上的退出按钮宏2 系统初始化的逆过程ActiveSheet.UnprotectActiveSheet.DrawingObjects(按钮 2).SelectSelection.OnAction = 撤销按钮2的指定宏ActiveSheet.DrawingObjects(按钮 3).SelectSelection.OnAction = 撤销按钮3的指定宏ActiveSheet.DrawingObje

37、cts(按钮 5).SelectSelection.OnAction = ActiveSheet.DrawingObjects(按钮 4).SelectSelection.OnAction = 撤销按钮4的指定宏ActiveSheet.Protectthecode = vbYesNo + vbDefaultButton2 + vbExclamation + vbapplicationmodelthereply = MsgBox(prompt:=是否存盘?(如果不是正式报表请选否!), Buttons:=thecode)Select Case thereplyCase vbYesdj = Wor

38、ksheets(报表).Range($g$278).Valueuj = Worksheets(报表).Range($h$278).Valuezj = worksheets(报表).Range($h$332).Valueda = Worksheets(报表).Range($g$277).Valueub = Worksheets(报表).Range($h$277).ValueIf dj 0 Or uj 0 Or da 0 Or ub 0 ThenActiveWorkbook.SaveChDrive a:ActiveWorkbook.SaveAs SHUIDIAN.XLS, ,Password:=,

39、WriteResPassword:=,ReadOnlyRecommended:= False, CreateBackup:=FalseApplication.QuitElseMsgBox 不是正式报表,不予存盘!Application.DisplayAlerts = FalseApplication.QuitEnd IfCase vbNoApplication.DisplayAlerts = FalseApplication.QuitEnd SelectEnd Sub 以上是执行退出存盘Sub 初始化() 指定给主界面上的系统初始化按钮定义界面 调用定义界面宏改变应用程序标题Worksheet

40、s(记录单).ActivateWorksheets(记录单).Range(c5:d330).SelectSelection.ClearContentsWorksheets(报表).ActivateActiveSheet.UnprotectWorksheets(报表).Range(c6:f331).SelectSelection.ClearContentsWorksheets(主界面).Activate 以上代码是清除记录单和报表数据宏1调用宏1End SubSub 宏1()With Toolbars(1).Visible = False.Position = xlFloating.Left = 89.Top = 67End WithWith Toolbars(2).Visible = False.Position = xlFloating.Left = 79.Top = 78End WithActiveWindow.DisplayWork

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号