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

Respuesta
1

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.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas