si claro esta instrucción esta en el formulario login en un commandbutton entrar de forma que si el usuario y contraseña introducidos están previamente registrados como "Admin" entonces da acceso a un formulario menú a través del cual se abren otros formularios que selecciono de un combobox entre ellos el formulario datos. La idea es que si el usuario y contraseña están registrados como "user" se abra solamente el formulario datos sin pasar por el formulario menú pero tenga algunas etiquetas desactivadas, dado que es usuario y no administrador, (perdón pero la instrucción es algo larga).
Private Sub btn_Registrar_Click()
' al introducir usuario y contrase?a comprueba que ya exista
Application.ScreenUpdating = False
' declaramos las siguientes variables
Dim usuario As String
Dim Fila, final As Integer
Dim password, UsuarioEncontrado, yaExiste, Status
Dim rango As Range
'----------------------------------------------------
' este tramo de la macro nos obliga a no dejar en blanco ninguno de los textbox del formulario login
If Trim(Txtusuario.Text) = "" Then
MsgBox "Ingrese usuario", vbExclamation, "Alerta"
Txtusuario.SetFocus
End If
If Trim(Txtpassword.Text) = "" Then
MsgBox "Ingrese contrase?a", vbExclamation, "Alerta"
Exit Sub
End If
'----------------------------------------------------
' comprueba con la tabla si el usuario y contrase?a son correctos
yaExiste = Application.WorksheetFunction.CountIf(Hoja4.Range("Tabla3[Usuario]"), Me.Txtusuario.Value)
Set rango = Hoja4.Range("Tabla3[Usuario]")
' si se pretende acceder sin usuario ni contrase?a se avisa mediante cartel
If Me.Txtusuario.Value = "" Or Me.Txtpassword.Value = "" Then
MsgBox "Introduce usuario y contrase?a", vbExclamation, Titulo
Me.Txtusuario.SetFocus
ElseIf yaExiste = 0 Then
MsgBox "El usuario '" & Me.Txtusuario & "' no existe", vbExclamation, Titulo
Txtusuario = ""
Txtpassword = ""
Txtusuario.SetFocus
ElseIf yaExiste = 1 Then
UsuarioEncontrado = rango.Find(What:=Me.Txtusuario.Value, MatchCase:=False).Address
password = Hoja4.Range(UsuarioEncontrado).Offset(0, 1).Value
Status = Hoja4.Range(UsuarioEncontrado).Offset(0, 2).Value
If Hoja4.Range(UsuarioEncontrado).Value = Me.Txtusuario.Value And password = Me.Txtpassword.Value Then
For Fila = 1 To 1000
If Hoja5.Cells(Fila, 1) = "" Then
final = Fila
Exit For
End If
Next
'---------------------------------------------------------
' esta rutina pega en la hoja 6 el ultimo usuario que ha usado el archivo y la hora
Hoja5.Cells(final, 1) = "=NOW()"
Hoja5.Cells(final, 1).Copy
Hoja5.Cells(final, 1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Hoja5.Cells(final, 2) = Me.Txtusuario
Hoja5.Cells(final, 3) = Status
'--------------------------------------------------------
If Status = "Admin" Then
' si el status es adminstrador oculta los controles del form login y
LabelLogin.Visible = False
LabelMENUOP.Visible = tru
Frame1.Visible = False
Frame3.Visible = False
Image1.Visible = False
Image2.Visible = False
Txtusuario.Enabled = False
Txtusuario.Visible = False
Txtpassword.Enabled = False
Txtpassword.Visible = False
btn_Registrar.Enabled = False
btn_Registrar.Visible = False
' muestra los controles del form menu de acceso
LabelLogin.Visible = False
LabelMENUOP.Visible = True
btn_Cancelar.Left = 48
btn_Cancelar.Top = 120
Label_ELEGIROPC.Visible = True
Cbo_Menu.Visible = True
Cbo_Menu.Enabled = True
' si se cumplen los parametros anteriores estas lineas cargan el cbo_menu
Sheets("UA").Visible = True
Sheets("UA").Activate
Range("L2").Select
While ActiveCell <> Empty
Cbo_Menu.AddItem ActiveCell
ActiveCell.Offset(1, 0).Select
Wend
End If
' esta linea pone en la columna E celda 1 el nombre del ultimo usuario que ha accedido al archivo
Hoja5.Range("E1") = Me.Txtusuario
Application.Visible = False
'--------------------------------------------------------------
Else
MsgBox "La contrase?a es incorrecta", vbExclamation, Titulo
UfmLOGIN.Hide
Application.ScreenUpdating = True
End If
End If
End Sub