Visual Basic para Aplicaciones - Ocultar ListBox

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 44
Ha disminuido su posición en 3 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Ocultar ListBox

Publicado por Marcos José (22 intervenciones) el 29/01/2020 05:21:35
Captura-de-pantalla-116

Hola a todos, me gustaria si podeis ayudarme con una macro para que si el usuario que entra al sistema, no es Administrador, osea, Usuario, no muestre el listbox 2.

Y si el usuario que entra al sistema es Administrador, muestre los dos listbox.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de MIGUEL
Val: 424
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Ocultar ListBox

Publicado por MIGUEL (121 intervenciones) el 29/01/2020 16:33:24
Buenas Marcos

Nesecitas una variable publica que te guarde si la persona que acaba de ingresar a la app es admin o no, por ejemplo esta es la macro que normalmente ocupo para el login, la variable publica NomUsAct me guarda el nombre completo de la persona y la variable EsAdmin me guarda si es admin.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Function ComprobarUsuario(usuario As String, clave As String) As Boolean
    Dim ultfila As Long
    Dim f As Long
    Dim texto, texto2 As String
    ultfila = Usuarios.Range("A" & Rows.Count).End(xlUp).Row
    For f = 2 To ultfila
        texto = Usuarios.Range("D" & f)
        texto2 = Usuarios.Range("E" & f)
        If UCase(texto) = UCase(usuario) And texto2 = clave Then
            NomUsAct = Usuarios.Range("B" & f) & " " & Usuarios.Range("C" & f)
            EsAdmin = Usuarios.Range("F" & f)
            ComprobarUsuario = True
        Else
            ComprobarUsuario = False
        End If
    Next f
End Function

Ya teniendo la variable seria facil decirle que oculte el listbox2 si el usuario no es admin, por ejemplo con mi usuario NomUsAct=Miguel Angel Garcia Rodriguez y EsAdmin=S con esto seria algo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub UserForm_Initialize()
    Me.Caption = Titulo
    Me.Label3.Caption = "Bienbenid@ " & NomUsAct
    If EsAdmin <> "S" Then
        Me.ListBox2.Visible = False
        'O talvez
        Me.ListBox2.Height = 0
        'O algo mas estetico
        Me.ListBox2.ColumnWidths = "180pt;71pt;0pt;71pt"
    Else
        Me.ListBox2.Visible = False
        Me.ListBox2.Height = 72
        Me.ListBox2.ColumnWidths = "180pt;71pt;71pt;71pt"
    End If
End Sub

Espero explicarme bien.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 44
Ha disminuido su posición en 3 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Ocultar ListBox

Publicado por Marcos José (22 intervenciones) el 29/01/2020 20:06:11
Siempre genial Miguel, como siempre.
Por cierto te he escrito a tu correo personal, miralo si puedes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 44
Ha disminuido su posición en 3 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Ocultar ListBox

Publicado por Marcos José (22 intervenciones) el 29/01/2020 20:18:39
Yo hice esta no tan especial como la tuya

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Private Sub UserForm_Initialize()
 
Me.Caption = "Usuario actual - " & Title
 
If Range("ActiveUsr").value <> "Administrador" Then
 
        Me.ListBoxUsuarioActual.ColumnCount = 3
        Me.ListBoxUsuarioActual.ColumnWidths = "80;80;150"
        Me.ListBoxUsuarioActual.ColumnHeads = True
        Me.ListBoxUsuarioActual.RowSource = "Datos! f2:h2"
 
Else
 
        Me.ListBoxUsuariosSistema.ColumnCount = 4
        Me.ListBoxUsuariosSistema.ColumnWidths = "150;80;80;80"
        Me.ListBoxUsuariosSistema.ColumnHeads = True
        Me.ListBoxUsuariosSistema.RowSource = "Datos! a2:d11"
 
        Me.ListBoxUsuarioActual.ColumnCount = 3
        Me.ListBoxUsuarioActual.ColumnWidths = "80;80;150"
        Me.ListBoxUsuarioActual.ColumnHeads = True
        Me.ListBoxUsuarioActual.RowSource = "Datos! f2:h2"
 
End If
 
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar