VBA登录|如何在Excel VBA中创建登录表单?
Excel VBA登录表单
可以在excel VBA中创建带有所有登录ID下拉列表的基于登录的用户表单,并且密码将单独共享。在某个时间点,您必须具有创建基于密码的登录用户表单的想法,该表单要求用户选择其用户ID并输入密码以访问所需的工作表。
在本文中,我们将向您展示如何使用excel VBA创建登录用户表单。
如何创建登录用户表单?
例如,假设您在不同的工作表中有按地区划分的销售数字。我们有4个不同的区域名称,每个区域工作表仅具有其相关数据。现在的想法是创建一个登录表单,其中“东”区域销售主管应仅看到“东”区域数据,而不能看到任何其他区域,但作为管理员,您应该看到所有区域工作表。
您可以在此处下载此VBA登录Excel模板– VBA登录Excel模板首先,我们需要插入一个名为“ Admin”的工作表名称。在此管理表中,我们需要创建“登录ID”和“密码”凭据。
我已将区域和密码命名为相同的名称,以后可以更改此名称。对于区域名称,我将名称范围创建为“ ZoneList”。稍后将在此登录用户表单上使用此“名称管理器”。
当用户打开文件时,他们应该在后台看到一个虚拟表,因此请创建一个新表并将其命名为“虚拟表”。
使用这些工作表,我们将创建一个登录用户表单。
步骤1:插入使用者表格
按ALT + F11键以打开VBA编辑器窗口。
- 从“插入”选项卡中插入“用户表单”。
- 这将创建一个新的用户表单,如下所示。
- 按F4键查看“属性”窗口,从该属性窗口将用户表单的名称更改为“ LoginUF”
- 类似地,使用此属性窗口,我们可以使用用户表单的属性。我已经进行了一些属性更改,您可以参考下面的属性窗口以将更改应用于用户表单的属性。
- 现在,我的用户表单如下所示。
步骤2:设计使用者表格
- 在用户窗体的工具箱中,插入两个标签框,然后输入文本,如下所示。
- 在工具箱中插入“组合箱”。
- 对于此组合框excel,我们需要从工作表“管理表”中获取区域名称,因此,首先应从“组合框”的属性窗口中为该组合框命名,命名为“名称”属性下的“ Zone_List_ComboBox”。
- 在组合框的“行来源”属性中,在“管理表”中输入区域列表的名称。
- 现在,我们的组合框应该在excel的下拉列表中显示区域名称。
- 对于“输入密码”,我们需要从工具箱中插入“文本框”。
- 对于此“文本框”,我们需要更改“名称”属性并将其更改为“ Password_TB”。
现在,在VBA登录表单的编码中,“组合框”将被命名为“ Zone_List_ComboBox”,而“文本框”将被命名为“ Password_TB”。
- 插入两个“命令按钮”,然后输入文本为“登录”和“注销”。
对于“登录”命令按钮,将名称属性更改为“ Login_CommandButton”,对于“注销”命令按钮,将名称属性更改为“ LogOut_CommandButton”。
步骤3:程式码
我们已经完成了VBA登录用户表单设计部分,是时候编写代码以在excel VBA中创建基于登录的用户表单了。
- 双击“登录”命令按钮,这将打开空白子程序,如下所示。
在此过程中,我们需要编写有关如果按下“登录”按钮会发生什么的代码。
我已经编写了代码,您可以在上述过程中从下面复制并粘贴代码。
代码:
私人子Login_CommandButton_Click()如果Zone_List_ComboBox.Value =“”则MsgBox“区域不能为空!!!”,vbInformation,“区域名称”退出子结尾如果如果Password_TB.Value =“”则MsgBox“密码不能为空! !”,vbInformation,“密码”退出子结束,如果Zone_List_ComboBox.Value =“ Admin”和Password_TB.Value =“ Admin”,则将ActiveWorkbook.Worksheets Ws.Visible = xlSheetVisible的下一个Ws表格作为工作表卸载到昏暗的Ws。 (“ Admin”)。选择其他Dim ZoneName作为字符串Dim Password作为变体ZoneName = Zone_List_ComboBox.Value密码= Application.WorksheetFunction.VLookup(ZoneName,Sheets(“ Admin”)。Range(“ A:B”),2,0 )如果密码Password_TB.Value然后MsgBox“密码不匹配”,vbInformation,“错误密码”退出子结尾,如果密码= Password_TB.Value,则卸载我的Sheets(ZoneName).Visible = True Sheets(ZoneName)。选择ActiveSheet。 Range(“ A1”)。选择End If End如果End Sub
同样,双击“注销”命令按钮并输入以下代码。
代码:
私人子LogOut_CommandButton_Click()ThisWorkbook.SaveThisWorkbook.Close End Sub
现在,双击“用户表单”(不在任何插入的按钮上)并添加以下代码。
代码:
“ Private Sub UserForm_QueryClose(取消为Integer,CloseMode为Integer)'禁止使用关闭按钮。如果CloseMode = vbFormControlMenu则MsgBox”单击关闭按钮无效。取消=如果结束,则结束
- 现在,双击“ ThisWorkbook”图标。这将在空白代码字段下方打开。
现在,在此空白字段中添加以下代码。
代码:
Private Sub Workbook_Open()将Ws用作工作表Application.DisplayAlerts = False Application.ScreenUpdating = False对于ActiveWorkbook.Worksheets中的每个Ws如果Ws.Name为“ Dummy”,则Ws.Visible = xlSheetVeryHidden结束,如果下一个Ws为LogInUF.Show结束Sub
- 我们已经完成了表单的编码部分。将工作簿另存为“启用宏的”工作簿,然后重新打开该工作簿。重新打开工作簿后,我们应该看到以下窗口。
- 从此用户表单中,我们需要选择相应的区域名称并输入关联的密码。例如,我将从下拉列表中选择“东部”区域,然后输入密码。
- 如果单击“登录”,我们只能看到“东部”区域工作表。
同样,如果我们使用“管理员”登录,则可以访问所有工作表。
这样,我们可以创建基于登录名的受密码保护的工作表访问权限。
要记住的事情
- 您需要使用与编码中的用户表单,文本框以及命令按钮和组合框相同的名称。
- 您可以根据需要更改区域名称和密码。