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 

  • 我们已经完成了表单的编码部分。将工作簿另存为“启用宏的”工作簿,然后重新打开该工作簿。重新打开工作簿后,我们应该看到以下窗口。

  • 从此用户表单中,我们需要选择相应的区域名称并输入关联的密码。例如,我将从下拉列表中选择“东部”区域,然后输入密码。

  • 如果单击“登录”,我们只能看到“东部”区域工作表。

同样,如果我们使用“管理员”登录,则可以访问所有工作表。

这样,我们可以创建基于登录名的受密码保护的工作表访问权限。

要记住的事情

  • 您需要使用与编码中的用户表单,文本框以及命令按钮和组合框相同的名称。
  • 您可以根据需要更改区域名称和密码。