Llamar a un formulario limitando sus controles
Tengo un formulario datos con una serie de etiquetas y de commandbuttons, en condiciones normales se ejecuta cuando lo llamo desde el formulario login sin ningún problema mi pregunta es: Yo quiero que ese formulario se active al completo o no, dependiendo del lugar desde el cual le llame, me explico si lo llamo desde el formulario login aparecerá con todas las etiquetas y los commandbutton activos, pero si lo llamo desde otro punto del libro quiero que aparezca con algunos commandbutton y etiquetas desactivasdos. Me podeis dar una idea.
1 respuesta
Si lo llamo desde el formulario login aparecerá con todas las etiquetas y los commandbutton activos, pero si lo llamo desde otro punto del libro
Puedes poner aquí la instrucción de esos "llamados".
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
Pero no respondiste mi duda.
Quiero ver la instrucción que utilizar para llamar al formulario.
Si lo llamo desde el formulario login aparecerá con todas las etiquetas y los commandbutton activos, pero si lo llamo desde otro punto del libro
Voy a preguntar de otra manera:
Si estás en el formulario login, ¿qué instrucción utilizas para llamar al "formulario"?
Si estás en otro punto del libro, ¿qué instrucción utilizas para llamar al "formulario"?
Nota:
Si pones código utiliza el icono para insertar código:
Perdona creía que lo había puesto si coinciden usuario y contraseña registrados como "Admin" en el formulario login se abre un formulario menú con un combobox al abrir este, aparecen entre otras opciones "ingresar datos" al seleccionarlo se abre el formulario datos simplemente con UfmDatos.show. mi idea es que cuando usuario y contraseña introducidos correspondan a un registro de usuario no de administrador, no se abra el formulario menú con todas las opciones sino que directamente se abra el ufm datos. De forma que un usuario solo tenga acceso a introducir datos, Al preguntar si se podía abrir Datos desactivando algunos controles es porque este ufm tiene etiquetas con código que permiten pasar de datos al ufmAutorizarUsuario o incluso a la hoja datos.
Perdona, no estoy entendiendo.
Solamente te pedí una instrucción, supongo que tienes una instrucción en VBA para abrir el formulario, solamente escribe aquí la instrucción que utilizas para abrir ese formulario.
ahí va el código...
Private Sub Cbo_Menu_Change() Application.ScreenUpdating = False If Cbo_Menu.Text = "Grabar incidencias" Then UfmLOGIN.Hide UfmDatos.Show End If
Otra vez:
Si lo llamo desde el formulario login aparecerá con todas las etiquetas y los commandbutton activos, pero si lo llamo desde otro punto del libro
Según tu pregunta inicial tienes 2 formas de llamar el formulario, pero solamente pusiste una.
Puedes poner la segunda.
Voy a dejar esta pregunta por falta de información.
- Compartir respuesta