Access编程交流网
  • 设为首页|收藏本站|繁体中文|手机版
  •     
  • Access培训-Access开发平台-Access行业开发

  • 首页
  • 资讯
  • 技巧
  • 源码
  • 行业
  • 资源
  • 活动
  • 关于

技巧

ACCESS数据库

启动/设置/选项/背景

修复/压缩

安全/加密/解密

快捷键

版本升级/其它等

数据表

命名方式/设计规范

表设计

查询

Sql语言基础

选择查询

更新查询

删除查询

追加查询

生成表查询

交叉表查询

SQL特定查询

查询参数

查询综合应用

界面/窗体/控件

标签

文本框

命令按钮

组合框/列表框

选项组/复选框/选项按钮

选项卡

子窗体

窗体本身/综合应用

其它

报表打印

报表设计

高级报表

模块/函数/VBA/API/系统

VBA基础

内置函数

调试/跟踪/Debug

模块/类模块

API/COM/系统相关

字符数字日期

网络通信游戏

加密解密安全

文件处理

经典算法

宏/菜单/工具栏/功能区

宏/脚本

菜单/工具栏

功能区/Ribbon

图表/图形/图像/多媒体

图表

图形/图像

音频

视频/动画

DAO/链接表/ADO/ADP

DAO/链接表/ODBC

ADO/RDO

ADP

ActiveX/第三方控件/插件

Treeview树控件

ListView列表控件

Toolbar工具栏控件

微软其它控件

Dbi-Tech

CodeJock

Grid++Report

FastReport

ComponentOne

加载项/插件/Addin

OFFICE集成/导入导出/交互

Excel导入导出/交互

Word导入导出/交互

PPT交互

Outlook控制/邮件

Text文本文件/INI/CSV

PDF/SWF/XML格式

CAD格式

Sharepoint/其它Office

SqlServer/其它数据库

表

视图

存储过程/触发器

函数

用户/权限/安全

调试/维护

SqlServer其它/综合

发布/打包/文档/帮助

开发版/运行时

打包/发布/部署

开发文档/帮助制作

Access完整行业系统

采购管理系统

销售管理系统

仓库管理系统

人力资源管理HRM

CRM管理系统

MRP/ERP管理系统

BRP/流程优化

其它管理系统

心得/经验/绝招
其它/杂项
Excel技巧

Excel应用与操作

Excel开发编程

Word技巧

Word应用与操作

Word开发编程

Outlook技巧

Outlook应用与操作

Outlook开发编程

热门文章

  • 如何利用Excel审计银行..
  • Excel2000 应用案..
  • Excel工作表计算、公式..
  • 让文本文件随Excel自选..
  • Excel 2000绘制函..
  • Excel97数据填充技巧

最新文章

  • 在 Excel中 打开Ac..
  • 为选择的区域添加边框
  • 如何在Excel中使用文件..
  • 用快捷键实现相对引用和绝对..
  • 【技巧】Excel控制特定..
  • Excel技巧集锦

联系方式

Access交流网(免费Access交流)

QQ:18449932 

网  址:www.access-cn.com

当前位置:首页 > 技巧 > Excel技巧 > Excel应用与操作
Excel应用与操作

Excel 97/VBA技术讲座之八

三、封装应用系统

    通过以上介绍,了解了Visual Basic工程的基本概念,掌握了应用ActiveX控件的方法。以下通过实例说明封装一个应用系统的大致过程。
    该实例是一个虚拟的有关保险公司不同险种缴费的查询系统。保险公司有多个险种,不同的险种其缴费方法、缴费金额各不相同。例如递增养老保险,不同性别标准不同;相同性别开始领取年龄不同缴费标准也不同;同一领取年龄,还有趸交、十年限交、十五年限交…等不同付款方式,每次缴费额亦不同。所以相当复杂。该系统选定输入某个险种后,根据该险种的规则,指定其中若干项后,即可输出相应的缴费标准。
    为了使软件更吸引人,通常都采用生动的图形化界面,如有可能,还可以利用VBA的时钟控件创建动画效果。由于篇幅所限,该软件的主画面只是由一个图片和几个按钮组成。当打开该工作簿时,首先出现软件的主画面:
    access数据库
    该软件虽然是在Excel 97中创建的,但是从主画面看很像一个独立的应用系统。有自己的标题和自己的菜单栏。这需要用自定义的菜单栏、窗口和工具栏替换Excel 97的环境,并保证当退出时还原初始的Excel 97环境。下面将具体说明是如何完成它们的。
   

1. 菜单栏的替换

替换Excel 97的菜单栏是很容易的,只需创建一个新的菜单栏就会删除Excel 97的菜单栏。当需要恢复Excel 97的菜单栏时,只要删除新创建的菜单栏就可以了。该系统的自定义菜单中只需两个命令按钮,一个用来返回到系统的主画面(ReturnMAIN),另一个用来退出系统(ExitSYS)。下面是模块(Module)中有关的宏或是事件控制程序。
    Sub ZapMenu( )
        On Error Resume Next
        CommandBars(“保险查询系统”).Delete
    End Sub
    这是一个用来删除自定义菜单栏的宏。语句On Error Resume Next保证无论自定义菜单栏是否存在都能正确删除它。
    Sub ExitSYS( )
        ZapMenu
        ActiveWorkbook.Close SaveChanges := False
    End Sub
    这是用来退出系统的宏。它删除自定义菜单,并关闭活动的工作簿(不提示保存修改)。
    Sub ReturnMAIN( )
       Worksheets(“保险查询系统”).Select
    End Sub
    该宏用来返回主画面。它激活“保险查询系统”工作表。

    Sub SetMenu( )
        Dim myBar As CommandBar
        Dim myButton As CommandBarButton
        ZapMenu
        Set myBar = CommandBars.Add(Name:=“保险查询系统”, _
            Position :=msoBarTop, _
            MenuBar :=True)
        Set myButton = myBar.Controls.Add(msoControlButton)
        myButton.Style = msoButtonCaption
        myButton.Caption = “退出[&E]”
        myButton.OnAction = “ExitSYS”
        Set myButton = myBar.Controls.Add(msoControlButton)
        myButton.Style = msoButtonCaption
        myButton.Caption = “返回[&R]”
        myButton.OnAction = “ReturnMAIN”
        myButton.Visible = False
        myBar.Protection = msoBarNoMove + msoBarNoCustomize
        myBar.Visible = True
    End Sub

    这个宏包含五部分。第一部分定义了一对变量。第二部分首先运行ZapMenu宏,保证保险查询系统菜单栏是不存在的,然后创建它。参数MenuBar的值设为True,确保这个新创建的命令栏为一菜单栏。第三部分和第四部分将两个命令按钮加入到菜单栏中。并设置ReturnMAIN命令按钮的初始状态为不可见状态。最后一部分保护这个新创建的菜单栏,使用户不能移动也不能自定义新菜单栏。
   

2. 窗口的替换

    封装应用系统时为应用系统创建大小合适的窗口是很有必要的。但当关闭应用系统时,必须恢复被应用系统覆盖的窗口。恢复窗口比恢复Excel 97的菜单栏要困难,因为必须记忆被覆盖的窗口的大小。可以使用变量保存被覆盖的窗口的大小。但是应注意用关键字Dim声明的变量只有在程序运行时才存在,程序运行结束后,其中的值是不保存的。因此应使用关键字Static声明变量。保存和恢复窗口的程序如下:

    Sub SetWindow(State)
        Const MyWidth = 420
        Const MyHeight = 320
        Static myOldWidth
        Static myOldHeight
        Static myOldState
        If State = xlOn Then
            myOldWidth = Application.Width
            myOldHeight = Application.Height
            myOldState = Application.WindowState
            Application.WindowState = xln1g
            Application.Width = myWidth
            Application.Height = myHeight
            Application.Caption = “保险查询系统”
            Application.DisplayFormulaBar = False
            Application.DisplayStatusBar = False
            ActiveWindow.DisplayHorizontalScrollBar = False
            ActiveWindow.DisplayVerticalScrollBar = False
            ActiveWindow.DisplayWorkbookTabs = False
        Else
            Application.Caption = Empty
            Application.Width = myOldWidth
            Application.Height = myOldHeight
            Application.WindowState = myOldState
            Application.DisplayFormulaBar = True
            Application.DisplayStatusBar = True
            Application.DisplayFormulaBar = True
            Application.DisplayStatusBar = True
            ActiveWindow.DisplayHorizontalScrollBar = True
            ActiveWindow.DisplayVerticalScrollBar = True
            ActiveWindow.DisplayWorkbookTabs = True
        End If
    End Sub

    可以用“SetWindow xlOn”和“SetWindow xlOff”语句设置用户窗口和恢复Excel 97窗口。其中的xlOn、xlOff为Excel 97内置常量。注意其中的“l”是小写英文字母“l”,而不是数字“1”。
   

3. 工具栏的替换

    类似地还要移去Excel 97的工具栏,并在退出应用系统时恢复它。但是工具栏的保存和恢复较窗口复杂,窗口只要三个变量保存高度,宽度,状态就可以了。而工具栏则可能是一个系列,数目不定,有时可能还有不知名称的自定义工具栏。为此可以使用自定义集合(它是Visual Basic的十分有用的工具)来处理。有关的宏如下:

    Sub SetBars(State)
        Static myOldBars As New Collection
        Dim myBar
        If State = xlOn Then
            For Each myBar In Application.CommandBars
                If myBar.Type <> 1 And myBar.Visible Then
                    myOldBars.Add myBar
                    myBar.Visible = False
                End If
            Next myBar
        Else
            For Each myBar In myOldBars
                myBar.Visible = True
            Next myBar
        End If
    End Sub

    将下述语句添加到ExitSYS宏中:

    SetWindow xlOff
    Set Bars xlOff

    以保证当单击“退出”按钮时,能恢复Excel 97的原来的环境。
   

4. 完成封装

    应用系统中所有的宏和事件控制程序完成后,还需要使它们在打开工作簿时能自动连接为一个整体。完成各自的功能。故最后在Workbook对象中插入下述程序:

    Private Sub WorkBook_Open( )
        SetMenu
        SetWindow xlOn
        SetBars xlOn
    End Sub
    Private Sub WorkBook_BeforeClose(Cancel As Boolean)
        ZapMenu
    SetWindow xlOff
        SetBars xlOff
   

        ActiveWorkbook.Saved = True

End Sub

    前者使得每次打开该工作簿,都能保证显示系统的主画面以及相应的菜单。后者则使得每次关闭工作簿时(防止用户不通过“退出”按钮,而直接通过窗口的关闭按钮关闭工作簿),能删除用户的自定义菜单,恢复Excel 97的环境。设置活动工作簿的Saved属性值为True,使Excel认为所有的修改均已存盘,不显示提示存盘信息。

    到此为止,应用系统已经封装完成了,它虽然简单,但仍不失为一个封装良好、具有一定功能的系统。
    通过本讲座的学习,读者不难看出,掌握VBA宏语言,对于更好地应用Excel 97具有十分重要的意义。不仅可以使工作更高效,更方便,而且可以更加自动化,甚至智能化。即使是非计算机专业的人员,也可以利用Excel 97/VBA,方便、快捷地开发出结合自己专业的高水平应用软件。而计算机专业人员开发一些应用于特定领域的系统,也不必非要使用专业的程序开发工具,而可以在Excel 97等软件基础上,利用相应软件的强大功能,再配合有关的宏语言,可以快速、高效的开发出相应的应用软件。(完)

发布人:admin-Excel Home  
分享到:
点击次数:  更新时间:2005-02-24 12:30:13  【打印此页】  【关闭】
上一条:如何减小数据库的尺寸?  下一条:Excel 97/VBA技术讲座之七



相关文章

  • • 在 Excel中 打开Access窗体或者报表的错误原因及解决办法
  • • 为选择的区域添加边框
  • • 如何在Excel中使用文件对话框
  • • 用快捷键实现相对引用和绝对引用快速来回切换
  • • 【技巧】Excel控制特定单元格输入文本的长度
  • • Excel技巧集锦
  • • Excel技巧大汇总
  • • 在word中输出数学符号

热门文章

  • [2005-02-13] 禁止自动运行宏access数据库
  • [2005-03-05] Excel随心所欲巧选择access数据库
  • [2005-03-05] Excel工作表计算、公式和函数的应用access数据库
  • [2005-04-08] 在 Microsoft Excel 2000 中将文件名插入到单元格access数据库
  • [2005-02-20] Excel2000 应用案例之四十一access数据库
  • [2005-04-06] EXCEL技巧53例三access数据库

热门产品

公司动态|在线留言|在线反馈|友情链接|会员中心|站内搜索|网站地图

中山市天鸣科技发展有限公司 版权所有 1999-2023 粤ICP备10043721号

QQ:18449932

Access应用 Access培训 Access开发 Access平台

access|数据库|access下载|access教程|access视频|access软件

Powered by MetInfo 5.3.12 ©2008-2025  www.metinfo.cn