大多数用户在使用Excel时,只需在工作表的单元格中输入数据,然后执行计算以在其他单元格或图表中显示结果。

工作表是一个数据输入和输出的用户界面,通过它来完成一些日常工作非常容易。其实,Excel内部为数据的录入提供了极其丰富和完备的功能,其中包括对单元格中数据的编辑、有效性检查和格式的设置等。同时,利用图表和单元格格式的设置以及各种绘图工具可以很好地控制数据的输出形式。

Excel不仅仅是一种电子表格,程序设计人员还可对其进行二次开发。微软公司在Excel中引入了VBA(Visual Basic for Applications,通常称为VBA,是一种应用程序自动化语言),使Excel成为一个引人注目的开发平台。用Excel开发的应用程序与用VB、C++、Java和.NET等语言开发的应用程序一样,成了许多公司重要商业软件的核心组成部分。

1 Excel二次开发应用程序结构

使用Excel可以开发各种应用程序,如,简易财务系统、工资管理、固定资产管理、工程预算、客户管理等OA系统。在Excel中使用VBA创建这些应用程序时,一般没有一个固定的结构,但大多数情况下,都有一些通用的模块结构。

一般情况下,二次开发的Excel应用都是以Excel工作簿的形式发布的。从用户角度看,与打开其他Excel工作簿的操作类似,不同之处在于,二次开发的Excel应用程序具有更多的智能性,能提高用户的操作效率。

而从开发者的角度看,二次开发的Excel应用程序一般由用户窗体、工作表、模块和类模块等部分构成。

1.1 用户窗体

在Excel VBA应用程序中,用户窗体作为最常用的用户界面被大量使用。使用用户窗体可将用户与工作表中的数据进行隔离,防止数据被意外修改并隐藏工作表中的敏感数据,使被限制权限的用户只看到应该操作的数据。一般系统中,常见的用户窗体有登录窗体、数据录入窗体和图表显示窗体等。

1.2 工作表

工作表是Excel用户最熟悉的工作界面,用于保存和显示程序的数据,是程序的主体部分。在开发Excel应用程序时,一般先在工作表中制作出表格的格式,并设置好样式,再通过VBA代码获取表格中的数据,经过加工处理后将其填入到相应的单元格,供用户查看和打印输出等操作。

1.3 模块

模块是保存VBA代码的地方,可保存程序的通用过程,供其他过程调用。例如,录制宏的代码就保存在模块中,开发人员大部分时间都是在模块中编写VBA代码。

1.4 类模块

类模块用来保存自定义对象的VBA代码。在Excel VBA中,除了可以使用系统提供的对象外,还可能通过自定义类来创建自定义的对象,自定义的类必须保存在类模块中。大多数应用程序都不使用类模块。

2 对象编程的事件驱动机制

VB是面向对象的编程语言,而Excel中的VBA是VB的一个子集,也支持面向对象的编程机制。

在面向对象的编程机制中,程序中的每个部件都是一个对象。如窗体、按钮、工作表、单元格等都是对象,开发人员通过编写代码操作这些对象,即可完成对Excel的控制。

在Excel VBA中 ,通过事件驱动提供开发人员与系统之间的接口,开发人员通过编写事件过程来处理产生该事件时希望系统完成的工作(如单击鼠标就打开一个窗口)。

在传统或过程化的应用程序中,应用程序自身控制了执行哪一部分代码和按何种顺序执行代码。从第一行代码执行程序并按应用程序中预定的路径执行,必要时调用过程。在事件驱动的应用程序中,代码不是按照预定的路径执行,而是在响应不同的事件时执行不同的代码片段。事件可以由用户操作触发,也可以由操作系统或其他应用程序的消息触发,甚至由应用程序本身的消息触发。这些事件的顺序决定了代码执行的顺序,因此,应用程序每次运行时所经过的代码路径都是不同的。

在Excel中使用VBA开发应用程序,实质就是编写程序中各对象不同事件的代码。事件是对象识别的动作,例如,打开Excel工作簿、切换当前工作表等都将产生相关事件。VBA的对象有一个预定义的事件集,对每个事件都可编写一个事件处理过程。如果其中有一个事件发生,而且有关联的事件过程中存在代码,则VBA调用该代码。例如,在工作簿的Open事件中编写有代码,则打开Excel工作簿时将执行该事件中的代码。Excel定义的事件很多,常见的事件有:

鼠标单击事件(Click);

工作簿打开事件(Open);

工作表激活事件(Activate);

单元格改变事件(Change);

启动Excel应用程序后,工作簿、工作表或单元格等对象就准备接收事件。事件可由用户引发(如键盘操作),可由系统引发(如定时器事件),也可由代码间接引发(如当代码激活其他工作表产生的事件)。

3 开发流程

3.1 系统设计

系统设计阶段是通过对用户需求进行调查分析,得出应用程序的功能、性能及数据要求,以确定Excel应用程序所需的工作表及表中的列数据、窗体等模块。

3.2 设计用户交互界面

一个良好的应用程序必须有一个良好的界面。用户通过界面与应用程序进行交互。开发人员在设计界面时,一定要牢牢把握方便用户操作这一观点,并贯穿到设计界面中。界面设计的方式主要有:

在工作表中添加控件;

设计用户窗体;

设计自定义功能区;

3.3 代码设计

将用户界面设计好后,接下来就需要编写界面中各部分的事件代码(如用户窗体中的按钮、功能区中的按钮等)了。

在Excel中设计VBA应用程序时,界面设计和代码设计一般是交替进行的,即设计好一个界面后就编写相应的代码。有时也可以先录制并修改好宏代码,再与工作表或用户窗体中的按钮进行绑定。

3.4 测试

设计测试数据需要尽可能多地考虑到各种不同的情况,不但要使用正常的合乎逻辑的数据测试应用程序的功能性,还应使用一些可能导致应用程序出错的数据测试应用程序的健壮性。

3.5 发布

发布需要注意Excel的版本、需要包含的动态链接库以及一些必要的辅助文件。

参考:《VBA|窗体作为输入界面实现数据快速录入》

相关推荐