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.
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).
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):
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 ;)