Formulario de inicio de sesión de VBA

Formulario de inicio de sesión de Excel VBA

Es posible crear un formulario de usuario basado en inicio de sesión en Excel VBA con toda la lista desplegable de ID de inicio de sesión y la contraseña se compartirá por separado. En algún momento, debe haber tenido una idea de cómo crear un formulario de usuario de inicio de sesión basado en contraseña que requiere que el usuario elija su identificación de usuario e ingrese la contraseña para acceder a la hoja de trabajo requerida.

En este artículo, le mostraremos cómo crear un formulario de usuario de inicio de sesión utilizando Excel VBA.

¿Cómo crear un formulario de usuario de inicio de sesión?

Por ejemplo, suponga que tiene números de ventas regionales en diferentes hojas de trabajo. Tenemos 4 nombres de zonas diferentes y cada hoja de trabajo de zona solo tiene sus datos relacionados. Ahora la idea es crear un formulario de inicio de sesión donde el jefe de ventas de la zona "Este" debería ver solo los datos de la zona "Este", no cualquier otra zona, pero como administrador, debería ver todas las hojas de trabajo de las zonas.

Puede descargar esta plantilla de Excel de inicio de sesión de VBA aquí - Plantilla de Excel de inicio de sesión de VBA

Primero, necesitamos insertar un nombre de hoja llamado "Admin". En esta hoja de administración, necesitamos crear una credencial de "Identificación de inicio de sesión" y "Contraseña".

He nombrado la zona y la contraseña de la misma manera que puede cambiar esto más adelante. Para los nombres de zona, he creado el rango de nombres como "ZoneList". Este "Administrador de nombres" se utilizará más adelante en este formulario de inicio de sesión.

Cuando el usuario abre el archivo, debería ver una hoja ficticia en el fondo, así que cree una nueva hoja y asígnele el nombre "Hoja ficticia".

Usando estas hojas de trabajo crearemos un formulario de usuario de inicio de sesión.

Paso 1: Insertar formulario de usuario

Presione la tecla ALT + F11 para abrir la ventana del Editor de VBA.

  • En la pestaña "Insertar", inserte "Formulario de usuario".

  • Esto creará un nuevo formulario de usuario como el siguiente.

  • Presione la tecla F4 para ver la ventana de Propiedades, desde esta ventana de propiedades cambie el nombre del formulario de usuario a "LoginUF"

  • De manera similar, usando esta ventana de propiedades podemos jugar con las propiedades del formulario de usuario. He realizado algunos de los cambios de propiedad, puede consultar la ventana de propiedades a continuación para aplicar cambios a las propiedades del formulario de usuario.

  • Ahora mi formulario de usuario se ve así.

Paso 2: Diseño de formulario de usuario

  • Desde la caja de herramientas del formulario de usuario, inserte dos cuadros de etiquetas e ingrese el texto como se muestra a continuación.

  • Desde la caja de herramientas, inserte "Combo Box".

  • Para este cuadro combinado de Excel, necesitamos obtener los nombres de las zonas de la hoja de trabajo "Hoja de administración", por lo que desde la ventana de propiedades del "Cuadro combinado" primero asigne un nombre a este cuadro combinado como "Zone_List_ComboBox" en la propiedad "Nombre".

  • Desde la propiedad "Fuente de fila" del cuadro combinado, ingrese el nombre dado a la lista de zonas en la "Hoja de administración".

  • Ahora nuestro cuadro combinado debería mostrar los nombres de las zonas en su lista desplegable en Excel.

  • Para "Ingrese su contraseña", debemos insertar un "Cuadro de texto" de la caja de herramientas.

  • Para este "Cuadro de texto", debemos cambiar la propiedad "Nombre" y cambiarla a "Contraseña_TB".

Ahora, en la codificación del formulario de inicio de sesión de VBA, "Combo Box" se denominará "Zone_List_ComboBox" y "Text Box" se denominará "Password_TB".

  • Inserte dos "botones de comando" e introduzca el texto como "Iniciar sesión" y "Cerrar sesión".

Para el botón de comando "Iniciar sesión", cambie la propiedad del nombre a "Login_CommandButton" y para el botón de comando "Cerrar sesión" cambie la propiedad del nombre a "LogOut_CommandButton".

Paso 3: Código

Hemos terminado con la parte de diseño del formulario de usuario de inicio de sesión de VBA, es hora de escribir el código para crear un formulario de usuario basado en inicio de sesión en Excel VBA.

  • Haga doble clic en el botón de comando “Iniciar sesión” para abrir un subprocedimiento en blanco como el siguiente.

Dentro de este procedimiento, necesitamos escribir el código sobre lo que debería suceder si se presiona el botón "Iniciar sesión".

Ya escribí el código, puede copiar y pegar el código desde abajo dentro del procedimiento anterior.

Código:

Private Sub Login_CommandButton_Click () If Zone_List_ComboBox.Value = "" Entonces MsgBox "¡La zona no puede estar en blanco!", VbInformation, "Nombre de zona" Salir del sub final Si si Password_TB.Value = "" Entonces MsgBox "¡La contraseña no puede estar en blanco! ! ", vbInformation," Password "Exit Sub End If If Zone_List_ComboBox.Value =" Admin "And Password_TB.Value =" Admin "Entonces descargue Dim Ws como hoja de trabajo para cada Ws en ActiveWorkbook.Worksheets Ws.Visible = xlSheetVisible Next Ws Sheets ("Admin"). Seleccione Else Dim ZoneName como cadena Dim Password como variante ZoneName = Zone_List_ComboBox.Value Password = Application.WorksheetFunction.VLookup (ZoneName, Sheets ("Admin"). Range ("A: B"), 2, 0 ) Si la contraseña Password_TB.Value, entonces MsgBox "La contraseña no coincide", vbInformation,"Contraseña incorrecta" Salir de Sub End If If Password = Password_TB.Value Then Unload Me Sheets (ZoneName) .Visible = True Sheets (ZoneName) .Select ActiveSheet.Range ("A1"). Seleccione End If End If End Sub

Del mismo modo, haga doble clic en el botón de comando "Cerrar sesión" e introduzca el siguiente código.

Código:

 Sub privado LogOut_CommandButton_Click () ThisWorkbook.Save ThisWorkbook.Close End Sub 

Ahora haga doble clic en "Formulario de usuario" (no en ninguno de los botones insertados) y agregue el siguiente código.

Código:

Private Sub UserForm_QueryClose (Cancelar como entero, CloseMode como entero) 'Impide el uso del botón Cerrar Si CloseMode = vbFormControlMenu Entonces MsgBox "Hacer clic en el botón Cerrar no funciona". Cancelar = True End If End Sub

  • Ahora haga doble clic en el icono "ThisWorkbook". Esto se abrirá debajo del campo de código en blanco.

Ahora agregue el siguiente código en este campo en blanco.

Código:

 Private Sub Workbook_Open() Dim Ws As Worksheet Application.DisplayAlerts = False Application.ScreenUpdating = False For Each Ws In ActiveWorkbook.Worksheets If Ws.Name  "Dummy" Then Ws.Visible = xlSheetVeryHidden End If Next Ws LogInUF.Show End Sub 

  • We are done with the coding part of the form. Save the workbook as a “Macro-Enabled” workbook and reopen the workbook. Upon reopening the workbook we should see the below window.

  • From this user form, we need to choose the respective zone name and enter the associated password. For example, I will choose the “East” zone from the drop-down and enter the password.

  • If I click on “Log In” we can see only the “East” zone worksheet.

Similarly, if we log in with “Admin” we can access all the worksheets.

Like this, we can create a login based password protected worksheet access.

Things to Remember

  • You need to use the same names that we have given to the user form, text box, and command button and combo box in the coding.
  • You can change the zone name and password according to your wish.