欢迎来到天天文库
浏览记录
ID:38657717
大小:708.50 KB
页数:44页
时间:2019-06-17
《创建向导样式的数据输入窗体》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、创建向导样式的数据输入窗体2011年04月12日,2:14下午Loading...引言:本文来源于《ProExcelVBA》的第4章的示例,主要为学习VBA用户窗体提供参考。本文“超长”,但如果能够仔细研读,一定会有很丰富的收获。可以先下载示例文档:向导样式的输入是相当普遍的技术,用于帮助用户输入较多的或复杂的数据。向导允许将数据分成相互联系的部分,通过按顺序输入数据的过程指导用户。示例工作簿名称为HRWizard.xlsm,由2个工作表组成,名为EmpData的工作表为员工数据库工作表,名为ListMg
2、r的工作表包含在创建数据输入窗体向导时使用的不同的列表。(其实还有一个名为UFormConfig的工作表,存放着向导步骤的信息)EmpData工作表被分成4部分:Personal、Address、Equipment、Access,如下列图所示。员工个人信息员工地址信息员工设备信息员工访问信息下面的向导窗体将引导用户为新员工输入信息。布局向导窗体1、打开VBE,添加新用户窗体。2、将用户窗体的高度设置为320,宽度为332。3、将用户窗体重命名为HRWizard。4、在用户窗体顶部添加标签,将其Captio
3、n属性设置为:MyCompany–HRWizard,设置字体为大尺寸,如18pt。5、在用户窗体中添加一个多页控件。6、设置该控件的Height属性为216,Width属性为270。7、将其在用户窗体中居中,在用户窗体底部留出空间。此时的用户窗体如下图所示。由于有4个数据集合部分,需要再添加两个页。1、在多页控件顶部的选项卡中单击右键。2、在快捷菜单中选择“新建页”,如下图所示。3、重复上面的步骤。此时的用户窗体如下图所示。在用户窗体中添加控件在“Page1”中添加的控件如下表所示,与EmpData工作表
4、中个人信息列标题一致。表:HRWizard用户窗体控件在多页控件的下方添加四个命令按钮。现在的用户窗体和下图相似。在“Page2”中添加的控件如下表所示,与EmpData工作表中地址信息列标题一致。表:Address选项卡控件设置Page2如下图所示。在“Page3”中添加的控件如下表所示,与EmpData工作表中设备信息列标题一致。表:设备选项卡控件设置Page3如下图所示。在“Page4”中添加的控件如下表所示,与EmpData工作表中访问信息列标题一致。表:访问选项卡控件设置Page4如下图所示。至
5、此,界面设计完成。接下来,设置一些类来使用户窗体工作。一开始,可能认为一个与数据记录相联系的类就满足要求了,但我们将在定义类时分解功能区,设计一两个类帮助定义向导步骤。最终,将有一个灵活的向导应用程序,提供非常容易修改步骤的顺序的能力,甚至添加一个步骤也相当简单。HRWizard类由于正收集的某些员工信息将被传递给其它部门去处理,因此在自已的类中放置从每个屏幕中获得的数据。也需要一个监控向导步骤的类,同时考虑一个帮助使用ListMgr工作表中数据填充列表的类。下表列出了每个类并描述了其功能。表:HRWiz
6、ard应用程序类模块类描述cPerson包含新记录中的所有个人信息cAddress包含新记录中的所有地址信息cEquipment包含新记录中的所有设备信息cAccess包含新记录中的所有访问信息cStep包含向导每一步的配置值cStepMgr控制向导的操作及管理cStep对象的集合cListMgr控制用户窗体中填充组合框的列表cHRData从商业对象中将数据转移到数据库;将数据从数据库发送到商业对象HRWizard商业对象下面开始设计商业对象。这些类存储每个对象的数据,包含每个对象的一些商业规则。在工程中
7、添加一个新的类模块并将其命名为cPerson,再添加另外三个类模块,分别将它们命名为cAddress、cEquipment和cAccess。cPerson对象包含一个cAddress对象、cEquipment对象、一个cAccess对象。要保持它们同步,对这四个商业对象类的每一个都添加一个ID属性。在每个类中,添加下列模块级的声明:Privatem_lngIDAsLongPublicPropertyGetID()AsLongID=m_lngIDEndPropertyPublicPropertyLetID(
8、newIDAsLong)m_lngID=newIDEndProperty现在,让我们集中开发cPerson类。每个类实质上对应着先前我们设计的每一个界面。在cPerson类中添加下列模块级变量声明:Privatem_sFNameAsStringPrivatem_sMidInitAsStringPrivatem_sLNameAsStringPrivatem_dtDOBAsDatePrivatem_sSSNAsStringPriv
此文档下载收益归作者所有