excel如何创建用户窗体 怎样在excel中加窗体

经验直达:

  • 怎样在excel中加窗体
  • excel如何创建用户窗体
  • 怎样做excel打开窗口

一、怎样在excel中加窗体


Microsoft Excel 提供了多个对话框工作表控件 , 您可以使用这些工作表控件来帮助选择数据 。例如,下拉框、列表框、微调框和滚动条都可用于选择列表中的项目 。

通过向工作表添加控件并将其链接到单元格,您可以返回控件当前位置的数值 。可以将该数值和 INDEX 函数结合使用从列表中选择不同项目 。

下列过程演示了下拉框、列表框、微调框和滚动条的用法 。以下示例使用同一列表、单元格链接和 INDEX 函数 。

要使用 Microsoft Office Excel 2007 中的窗体控件,您必须启用“开发工具”选项卡 。为此 , 请按照下列步骤操作:1. 单击“Office 按钮”,然后单击“Excel 选项” 。
2. 在“常用”选项卡上,单击以选中“在功能区显示‘开发工具’选项卡”复选框,然后单击“确定” 。


二、excel如何创建用户窗体


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

打开VBE,插入用户窗体,默认名为UserForm1.按下表在用户窗体中添加控件并设置属性 。

完成的用户窗体如下图所示 。

编写代码
1 编写找到数据库工作表中下一个空白行的代码
在VBE中,插入一个类模块,并命名为cExcelUtils,输入下列代码:
Function FindEmptyRow(ws As Worksheet) As LongDim lngReturn As LonglngReturn = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).RowFindEmptyRow = lngReturnEnd Function
2 编写代码以包含每个员工信息的值,以及存储数据库工作表的位置,将数据保存到数据库
插入一个类模块,并命名为cEmployeeInfo,添加下面的代码在模块的声明部分:
Private m_lngIDAs LongPrivate m_strNameAs StringPrivate m_strSchoolAs StringPrivate m_blnAbility As BooleanPrivate m_blnObeyAs BooleanPrivate m_xlWkshtAs WorksheetPrivate m_oXLAs 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_xlWksht.Cells(Rows.Count, 1).End(xlUp).Value1m_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(Me.Name & "") * Len(Me.School & "")) = 0 ThenblnReturn = FalseElseblnReturn = TrueEnd IfValidateData = https://www.itzhengshu.com/excel/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_oXL.FindEmptyRow(m_xlWksht) With m_xlWksht.Cells(lngNewRowNum, 1).Value = https://www.itzhengshu.com/excel/Me.ID.Cells(lngNewRowNum, 2).Value = Me.Name.Cells(lngNewRowNum, 3).Value = Me.School.Cells(lngNewRowNum, 4).Value = Me.Ability.Cells(lngNewRowNum, 5).Value = Me.ObeyEnd With If Err.Number = 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_oEmployeeInfo.DBWorkSheet = Sheets("入职员工信息")m_oEmployeeInfo.GetNextIDlblID.Caption = m_oEmployeeInfo.IDm_blnSaved = FalseClearFormEnd Sub Private Sub UserForm_Terminate()Set m_oEmployeeInfo = NothingEnd Sub
在用户窗体初始化时,实例化oEmployeeInfo对象,然后设置DBWorksheet属性 。然后,获取下一个可用的ID号并将其放置到标签中 。也清除了窗体中的控件值 。
Private Sub ClearForm()Me.txtName.Valuehttps://www.itzhengshu.com/excel/= ""Me.txtSchool.Valuehttps://www.itzhengshu.com/excel/= ""Me.chkAbility.Value = https://www.itzhengshu.com/excel/FalseMe.chkObey.Value = FalseEnd Sub
用户窗体中有三个命令按钮:一个用于保存输入的数据,一个用于清除用户窗体数据并添加新记录 , 一个用于取消数据输入操作并且不保存数据而关闭用户窗体 。
“保存”按钮应该执行下列功能:
发送数据到cEmployeeInfo类
验收数据,如果数据无效则返回一条消息
如果数据有效则保存数据 , 并且如果保存成功则返回一条消息
保存后清除用户窗体数据,并重设保存标志
代码如下:
Private Sub cmdSave_Click()With m_oEmployeeInfo.Name = txtName.Text.School = txtSchool.Text.Ability = chkAbility.Value.Obey = chkObey.ValueEnd WithIf Not m_oEmployeeInfo.ValidateData ThenMsgBox "姓名和毕业院校必填", vbOKOnly, "不能保存"Exit SubElsem_blnSaved = m_oEmployeeInfo.SaveEnd IfDoAfterSave m_blnSavedEnd Sub
过程DoAfterSave用于执行清理 。
Private Sub DoAfterSave(success As Boolean)If success ThenClearFormlblID.Caption = m_oEmployeeInfo.GetNextIDMsgBox "记录已保存"ElseMsgBox "没有保存记录"End Ifm_blnSaved = False '重设标志End Sub
“新建”按钮的代码如下,在新建之前,检查文本字段看用户窗体中是否有任何数据:
Private Sub cmdNew_Click()'为新记录设置窗体Dim iAnswer As Integer'检查当前记录是否被保存If Not m_blnSaved Then '是否有输入的文本没有被保存If (Len(Me.txtName.Value & "")Len(Me.txtSchool.Value & "")) <> 0 TheniAnswer = MsgBox("有没有保存的数据,想继续吗?", vbYesNo, "没有保存数据")If iAnswer = vbYes ThenClearFormEnd IfElseClearFormEnd IfEnd IfEnd Sub
“取消”按钮用来清除用户窗体并关闭该用户窗体:
Private Sub cmdCancel_Click()ClearFormUnload UserForm1End Sub
现在,运行用户窗体来看看效果 。


三、怎样做excel打开窗口


方法/步骤
  • 1
    打开两个excel文件 。

    excel如何创建用户窗体 怎样在excel中加窗体

    请点击输入图片描述
  • 2
    在上方工具栏点击“视图” , 然后点击“并排查看”;

    excel如何创建用户窗体 怎样在excel中加窗体

    请点击输入图片描述
  • 3
    如图所示,此时excel就会呈现上下两个窗口,我们可以里面进行编辑,不需要来回切换;

    excel如何创建用户窗体 怎样在excel中加窗体

    请点击输入图片描述
  • 4
    如果想要取消,那么在其中一个窗口中再点击“视图”,然后再次点击“并排查看”;

    【excel如何创建用户窗体 怎样在excel中加窗体】
    excel如何创建用户窗体 怎样在excel中加窗体

    请点击输入图片描述
  • 5
    此时窗口就会回到一个 。我们也可以用“视图”中的“切换窗口”来选择我们想要查看的窗口;

    excel如何创建用户窗体 怎样在excel中加窗体

    请点击输入图片描述
  • 6
    选择其中一个之后的效果如图,我们选择的窗口就会切换出来 。

    excel如何创建用户窗体 怎样在excel中加窗体

    请点击输入图片描述

相关经验推荐