题
使用窗体制作登录界面,实现当打开Excel时,隐藏工作簿,当登录完成后显示工作簿。
码
登录机制是将用户输入的用户名和密码与正确的用户名和密码进行比较,若相等,则表示登录成功,反之登录失败。本例的实现需要创建一个登录窗口允许用户输入用户名和密码,当单击“登录”按钮后立即进行校验。在工作簿的Open事件中添加显示窗体的代码,并将Excel程序对象的Visible属性设置为False,以隐藏Excel程序,当窗体关闭时,再将该属性设置为True。
步骤1 将Sheet2作为存储用户名和密码的工作表,如图所示。
步骤2 按组合键【Alt+F11】打开VBE。
步骤 3选择菜单“插入”→“用户窗体”,并在窗体中插入两个Label控件(分别设置Caption属性为“用户名”和“密码”)、两个TextBox控件(分别修改名称为“txtUserName”和“tPassword”,分别作为用户名和密码的输入控件)和一个CommandButton控件(将其Caption属性更改为“登录”,作为登录按钮),如图所示。
步骤4 在“工程资源管理器”中用鼠标右键单击之前插入的窗体,选择“查看代码”,并输入以下代码。
Option ExplicitDim blnLogin As BooleanPrivate Sub CommandButton1_Click()Dim username As StringDim password As StringDim rngName As Rangeusername = Me.txtUserName.Textpassword = Me.txtPassword.TextIf Trim(username) = "" Then Exit SubSet rngName = Sheet2.Columns(1).Find(username, lookat:=xlWhole)If Not rngName Is Nothing ThenIf password = rngName.Offset(0, 1).Value ThenblnLogin = TrueUnload MeExit SubEnd IfEnd IfMsgBox "用户名或密码错误!"End SubPrivate Sub UserForm_Initialize()blnLogin = FalseEnd SubPrivate Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)'显示Excel程序Application.Visible = True'若登录不成功,则关闭工作薄If Not blnLogin ThenThisWorkbook.Close FalseEnd IfEnd Sub
步骤5 在“工程资源管理器”中用鼠标右键单击ThisWorkbook,选择“查看代码”,并输入以下代码:
Private Sub Workbook_Open()'隐藏Excel程序Application.Visible = False'显示窗体UserForm1.ShowEnd Sub
步骤6 保存并关闭工作簿后再次打开工作簿。整个Excel程序将隐藏,并显示登录窗口,当登录成功时,则窗体关闭并且显示Excel工作簿;当直接关闭窗体时,则工作簿关闭;当用户名或者密码错误时,程序将给出提示。
使用窗体作为操作界面
由于窗体的功能十分强大,使用窗体作为操作界面对用户来说可以提供很多便利。开发者甚至可以将窗体作为整个Excel程序的界面而自始至终不显示工作表。使用窗体作为登录界面的流程见图
隐藏Excel工作簿
一般地,隐藏工作簿可以有以下两种方法。
隐藏Excel程序。将Application对象的Visible属性设置为False,则可以实现隐藏整个Excel程序的效果,但此时窗体仍将显示。本例采用了此方法。将工作簿的属性设置为加载宏。设置工作簿的IsAddin为True,此时工作簿将隐藏,但不影响其他工作簿的显示,而且该工作簿可以在VBE窗口中找到。
无论用何种方法隐藏工作簿,都应在窗体关闭后将工作簿再次显示。