excel如何创建用户窗体

excel如何创建用户窗体,第1张

下面,创建一个简单的用户窗体,用于输入“入职员工信息”数据

设计用户窗体

下表是个简单的“入职员工信息”数据库,用户窗体用于收集信息并将数据信息保存到该数据库中。

打开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怎么制作窗体连接数据库急急急!、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9673919.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存