Para poder realizar un control de ingresos, primero habría que tener una lista de usuarios-claves y sus permisos. Esto lo podrás registrar manualmente en alguna hoja o contar con un formulario de registro similar al de la imagen donde irás guardando sus permisos.
![](//blob.todoexpertos.com/uploads/md/8aafa4d8e4f04221874e4242abd0bf35.png)
Luego se necesita el formulario de ingreso (no se si ya lo tendrás). Lo clásico es algo así. Y al evaluar si usuario-contraseña coinciden con los de la lista, guardarás en estado en una variable pública (ver macro más abajo).
![](//blob.todoexpertos.com/uploads/md/2b218690a4ddc9076409c04bae81d7b4.png)
Y por último, al llamar a algún formulario de tareas, por ejemplo una consulta, ya sabrás cuál es el usuario y si tiene permisos o no para esa tarea.
Por ej, en la macro se evalúa si status = C o sea el permiso para el UF de consulta. Donde status será el permiso que se guardó en una variable pública una vez que ingresó con el formulario anterior .
Public status
Sub llamaUF_Base()
'ver si es un usuario autorizado
If status <> "C" Then
MsgBox "No tienes permisos para esta opción.", , "Información"
Exit Sub
Else
UF_Consulta.Show
End If
End Sub
Hay muchas maneras de resolver este tema .... lo ideal es que dejes una imagen de tu formulario.
Otra propuesta: Si no haces control de ingreso podrías solamente, al momento de llamar a una tarea, pedirle una clave (tendrás en una hoja la lista de tareas+clave).
Por ej, como en este otro modelo (extraído de mi Manual de Formularios):
![](//blob.todoexpertos.com/uploads/md/956f46c6df6ca96504d215d727cfe829.png)
Cambia lo nombres de las tareas (Consulta, Registro, etc).
Y la macro para el botón Aceptar será similar a esto:
Private Sub cmdAceptar_Click()
If txtPassword.Value = "" Then
MsgBox "Introduce contraseña.", vbExclamation, "Atención"
txtPassword.SetFocus
End If
'se busca en una lista de claves+permisos
Set hol = Sheets("Listas")
Set busco = hol.Range("R:R").Find(txtPassword.Value, LookIn:=xlValues, lookat:=xlWhole)
If busco Is Nothing Then
MsgBox "Clave incorrecta", vbExclamation, "Atención"
txtPassword.SetFocus
Else
UF_Consulta.Show
Unload Me
End If
End Sub
Puedes hacer una combinación de ambas propuestas ;)