
下面,创建一个简单的用户窗体,用于输入“入职员工信息”数据。
设计用户窗体
下表是个简单的“入职员工信息”数据库,用户窗体用于收集信息并将数据信息保存到该数据库中。
打开VBE,插入用户窗体,默认名为UserForm1。按下表在用户窗体中添加控件并设置属性。
完成的用户窗体如下图所示。
编写代码
1 编写找到数据库工作表中下一个空白行的代码
在VBE中,插入一个类模块,并命名为cExcelUtils,输入下列代码:
Function FindEmptyRow(ws As Worksheet) As LongDim lngReturn As LonglngReturn = wsCells(RowsCount, 1)End(xlUp)Offset(1, 0)RowFindEmptyRow = lngReturnEnd Function
2 编写代码以包含每个员工信息的值,以及存储数据库工作表的位置,将数据保存到数据库
插入一个类模块,并命名为cEmployeeInfo,添加下面的代码在模块的声明部分:
Private m_lngID As LongPrivate m_strName As StringPrivate m_strSchool As StringPrivate m_blnAbility As BooleanPrivate m_blnObey As BooleanPrivate m_xlWksht As WorksheetPrivate m_oXL As cExcelUtils
前5个变量是我们在用户窗体中要输入的数据,以及从数据库工作表中产生的ID字段。变量m_xlWksht包含数据库工作表的位置。变量m_oXL决定在哪里放置新数据。
首先,添加数据属性。
Property Get ID() As LongID = m_lngIDEnd Property Property Get Name() As StringName = m_strNameEnd Property Property Let Name(newName As String)m_strName = newNameEnd Property Property Get School() As StringSchool = m_strSchoolEnd Property Property Let School(newSchool As String)m_strSchool = newSchoolEnd Property Property Get Ability() As BooleanAbility = m_blnAbilityEnd Property Property Let Ability(newAbility As Boolean)m_blnAbility = newAbilityEnd Property Property Get Obey() As BooleanObey = m_blnObeyEnd Property Property Let Obey(newObey As Boolean)m_blnObey = newObeyEnd Property Property Get DBWorkSheet() As WorksheetSet DBWorkSheet = m_xlWkshtEnd Property Property Set DBWorkSheet(newSheet As Worksheet)Set m_xlWksht = newSheetEnd Property
注意,ID属性没有Property Let方法,因此该属性是只读的。
下面,添加GetNextID方法找到最后一行,从第一列中获取值,然后增加1,以此来设置ID属性的值。
Public Function GetNextID() As LongDim lngReturn As LonglngReturn = m_xlWkshtCells(RowsCount, 1)End(xlUp)Value + 1m_lngID = lngReturn '设置ID属性 GetNextID = lngReturnEnd Function
接下来,添加初始化和清除代码:
Private Sub Class_Initialize()Set m_oXL = New cExcelUtilsEnd Sub Private Sub Class_Terminate()Set m_oXL = NothingEnd Sub
再继续完善该类的功能。先添加一些验证代码。如果Name属性和School属性没有数据的话,则不会保存记录。
Public Function ValidateData() As BooleanDim blnReturn As BooleanIf (Len(MeName & "") Len(MeSchool & "")) = 0 ThenblnReturn = FalseElseblnReturn = TrueEnd IfValidateData = blnReturnEnd Function
通过文本值的长度相乘,能够决定是否填充数据。
接下来,编写保存功能的代码。需要知道下一个可用行的行号为数据输入,需要知道该行所在的工作表,并且如果没有错误,返回True。
Public Function Save() As BooleanDim lngNewRowNum As LongDim blnReturn As Boolean If m_xlWksht Is Nothing ThenblnReturn = FalseGoTo Exit_FunctionEnd If lngNewRowNum = m_oXLFindEmptyRow(m_xlWksht) With m_xlWkshtCells(lngNewRowNum, 1)Value = MeIDCells(lngNewRowNum, 2)Value = MeNameCells(lngNewRowNum, 3)Value = MeSchoolCells(lngNewRowNum, 4)Value = MeAbilityCells(lngNewRowNum, 5)Value = MeObeyEnd With If ErrNumber = 0 ThenblnReturn = TrueEnd If Exit_Function:Save = blnReturnExit FunctionEnd Function
代码首先检查以确保工作表对象存在,如果不存在则返回False并退出函数。接下来,从cExcelUtils对象中获取空行位置。然后,使用代表数据库工作表的m_xlWksht变量,使用从类属性中的数据填充每列。最后,检查没有发生错误,设置返回值为True,然后退出函数。
这就是cEmployeeInfo类,包含从用户窗体中的输入值,为任何新记录找到下一个ID值,保存数据到工作表中下一个空行。
编写用户窗体代码
在用户窗体代码模块中添加下列模块级变量:
Private m_oEmployeeInfo As cEmployeeInfoPrivate m_blnSaved As Boolean
变量m_blnSaved存储从m_oEmployeeInfo对象的Save方法中返回的值。下面,编写用户窗体初始化和中止事件代码:
Private Sub UserForm_Initialize()Set m_oEmployeeInfo = New cEmployeeInfoSet m_oEmployeeInfoDBWorkSheet = Sheets("入职员工信息")m_oEmployeeInfoGetNextIDlblIDCaption = m_oEmployeeInfoIDm_blnSaved = FalseClearFormEnd Sub Private Sub UserForm_Terminate()Set m_oEmployeeInfo = NothingEnd Sub
在用户窗体初始化时,实例化oEmployeeInfo对象,然后设置DBWorksheet属性。然后,获取下一个可用的ID号并将其放置到标签中。也清除了窗体中的控件值。
Private Sub ClearForm()MetxtNameValue = ""MetxtSchoolValue = ""MechkAbilityValue = FalseMechkObeyValue = FalseEnd Sub
用户窗体中有三个命令按钮:一个用于保存输入的数据,一个用于清除用户窗体数据并添加新记录,一个用于取消数据输入 *** 作并且不保存数据而关闭用户窗体。
“保存”按钮应该执行下列功能:
发送数据到cEmployeeInfo类
验收数据,如果数据无效则返回一条消息
如果数据有效则保存数据,并且如果保存成功则返回一条消息
保存后清除用户窗体数据,并重设保存标志
代码如下:
Private Sub cmdSave_Click()With m_oEmployeeInfoName = txtNameTextSchool = txtSchoolTextAbility = chkAbilityValueObey = chkObeyValueEnd WithIf Not m_oEmployeeInfoValidateData ThenMsgBox "姓名和毕业院校必填", vbOKOnly, "不能保存"Exit SubElsem_blnSaved = m_oEmployeeInfoSaveEnd IfDoAfterSave m_blnSavedEnd Sub
过程DoAfterSave用于执行清理。
Private Sub DoAfterSave(success As Boolean)If success ThenClearFormlblIDCaption = m_oEmployeeInfoGetNextIDMsgBox "记录已保存"ElseMsgBox "没有保存记录"End Ifm_blnSaved = False '重设标志End Sub
“新建”按钮的代码如下,在新建之前,检查文本字段看用户窗体中是否有任何数据:
Private Sub cmdNew_Click()'为新记录设置窗体 Dim iAnswer As Integer'检查当前记录是否被保存 If Not m_blnSaved Then '是否有输入的文本没有被保存 If (Len(MetxtNameValue & "") + Len(MetxtSchoolValue & "")) <> 0 TheniAnswer = MsgBox("有没有保存的数据,想继续吗", vbYesNo, "没有保存数据")If iAnswer = vbYes ThenClearFormEnd IfElseClearFormEnd IfEnd IfEnd Sub
“取消”按钮用来清除用户窗体并关闭该用户窗体:
Private Sub cmdCancel_Click()ClearFormUnload UserForm1End Sub
现在,运行用户窗体来看看效果。
它的数据库里面的 *** 作?链接数据库,第一个导入到数据库中。连接到数据库,找到数据库中的界面,然后选择数据库的MDF数据库啊,。
mdf文件的路径,并最终选择了进口。后,仅可以使用,使用数据库的用户名和权限必须注意。因此,使用别人的数据库,感觉是不是很简单。
以上就是关于excel如何创建用户窗体全部的内容,包括:excel如何创建用户窗体、VS2010怎么制作窗体连接数据库急急急!、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)