Excel Vba. Control de usuario.

Necesito controlar el acceso de usuarios a un documento, y ya en Vba hice una userform1, donde le añadí 2 botones de comando, uno para la función cancelar y otro para la función aceptar, 2 Label una de usuario y otra de contraseña. 1 ComboBox para la introducción de datos de usuario y por último un TextBox para la introducción de contraseñas. Pero el problema es que sólo me reconoce una contraseña y no todas, la cantidad de usuarios que van a acceder al documento es 5, administrador, invitado, y usuario standard. Los códigos aplicados en el userform son los siguientes:

Private Sub CommandButton1_Click()
If ComboBox1.Text = "Luis G" And TextBox2.Text <> "121314" Then
MsgBox "Contraseña incorrecta. Acceso denegado. Volver a intentar"
TextBox2.Text = ""
TextBox2.SetFocus
Else
MsgBox "Bienvenido al sistema!"
Unload Me
End If
End Sub
Private Sub CommandButton2_Click()
Application.Quit
End Sub
Private Sub UserForm_Click()
Application.Visible = False
UserForm1.Show
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Cancel = True
MsgBox "Acceso denegado"
Me.Caption = "Control de usuarios!"
End If
End Sub

En el apartado ThisWorkBook está este código:

Private Sub Workbook_Open()

Application.Visible = True
UserForm1.Show
End Sub

En el módulo está el siguiente código:

Sub Auto_Open()
Sheets(1).Select
End Sub

Éste último código está orientado en permitir que el Userform siempre se active en la hoja1.

Necesito que el Userform me reconozca más de 1 contraseña.

Aparte, en lo referente a los usuarios, el Userform por su parte le da acceso a todos los usuarios con la única contraseña que reconoce. Es decir, si los valores del texto dentro de la ComboBox no coincide con el valor del TextBox no debería permitir dicho acceso!

2 respuestas

Respuesta
1

Usa la intrusión Select case para los usuario y contraseña y así podrás definir quien es administrador o usuarios

[email protected] enumera los nombre para crearte la rutina o el ejemplo a seguir

Respuesta
1

Una forma sería que en otra hoja tuviera una tabla con dos columnas: Usuario y Contraseña. De ahí tan solo haces una comparación, por ejemplo:

Private Sub buttonAceptar_Click()
   Dim usuariobien,contrabien As Boolean
   Dim nombre,contrasenia As String
   nombre=TextBox1.Value
   contrasenia=TextBox2.Value
   usuariobien=bienNombre(nombre)
   contrabien=bienContrasenia(contrasenia)
  If usuariobien=True And contrabien=True Then
     MsgBox "Bienvenido"
  Else
     MsgBox "Sin acceso"
  End If
End Sub
Function bienNombre(nombre As String) As Boolean
    Dim x, rango As Range
    Set rango = Sheets("Hoja 2").Range("A1:A4100")
    For Each x In rango
        If x.Value = nombre Then
            obtenerNombre = True
        Else
            obtenerNombre = False
        End If
    Next x
End Function
Function bienContrasenia(contrasenia As String) As Boolean
    Dim x, rango As Range
    Set rango = Sheets("Hoja 2").Range("A1:A4100")
    For Each x In rango
        If x.Value = contrasenia Then
            obtenerNombre = True
        Else
            obtenerNombre = False
        End If
    Next x
End Function

Se me olvidaba que en la función biencontrasenia cambiar bien donde se asigna su valor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas