Visual Basic para Aplicaciones - Contraseña para entrar en una hoja de Excel desde código

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

Contraseña para entrar en una hoja de Excel desde código

Publicado por Albert (204 intervenciones) el 08/12/2019 19:34:37
Buenas tardes, tengo un for para entrar en la hoja de Excel, funciona bien mientras pongo las claves en la programación directamente con este codigo

1
If Me.TextBox3 = CStr("paco") And Me.TextBox4 = CStr("4054") Then

estoy intentando hacer una aplicación para diversos autónomos y quiero que puedan ponerse ellos los "usuario" y Pasword, poniéndolo en la hoja datos , para dejárselo yo les digo el código que será uno fácil (1 y 1) he intentado con el siguiente código pero me da error 91 en tiempo de ejecución Variable de objeto, no se que estoy haciendo mal, si alguien puede verlo se lo agradezco.
Mil Gracias de antemano

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub CommandButton4_Click()
Dim i As Integer
Dim x As Range
Dim y As Range
 
If Me.TextBox3 = "" Then
MsgBox "Debe Escribir el usuario", vbExclamation
Call SetFocus.SetFocus
Exit Sub
End If
x = Sheets("Datos").Range("d23").Value
y = Sheets("Datos").Range("d24").Value
TextBox3.Text = LCase(TextBox3.Text) 'convierto mayusculas a minusculas
If Me.TextBox3 = x And Me.TextBox4 = y Then
MsgBox "Bienvenido", vbInformation
Unload Me
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
sin imagen de perfil
Val: 286
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Contraseña para entrar en una hoja de Excel desde código

Publicado por fjpg (135 intervenciones) el 08/12/2019 23:29:24
Hola Albert.

Hace tiempo tuve la misma duda. Preguntado y buscando me salió este login.
Espero que te sirva y puedas modificarlo o utilizarlo.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 177
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Contraseña para entrar en una hoja de Excel desde código

Publicado por Albert (204 intervenciones) el 09/12/2019 12:52:52
Buenos dias, he intentado adaptar tu modelo al mio y me da el error "error en el metodo Range de objeto "Worksheet" en la linea
1
conteo = Hoja2.Range("a1048576").End(xlUp).Row + 1
me imagino que habras hecho una lista pero como?
Muchas Gracias
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: 286
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

contraseñaContraseña para entrar en una hoja de Excel desde código

Publicado por fjpg (135 intervenciones) el 09/12/2019 15:16:25
En la variable conteo, tendrás que poner la hoja dondr tengas los usuarios...

Si es la hoja 5 seria:
1
Conteo = Hoja5. Range("a1048576").End(xlUp).Row+1
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: 177
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Contraseña para entrar en una hoja de Excel desde código

Publicado por Albert (204 intervenciones) el 09/12/2019 16:25:49
si eso ya lo he hecho, he creado una hoja nueva la he llamado hoja2, y he copiado todo tu código y tu useform, la unica diferencia es que no se me despliega el combobox
Yo normalmente cuando uso desplegables uso este codigo
1
2
3
4
5
6
7
Private Sub UserForm_Initialize()
 Dim rango, celda As Range
Set rango = Worksheets("regiones").Range("A1:A7")
 For Each celda In rango
    ComboBox1.AddItem celda.Value
Next celda
End Sub
pero en tu form no lo se ver, no se mucho de programación.....se nota verdad...jejejej
Gracias por estar
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: 286
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Contraseña para entrar en una hoja de Excel desde código

Publicado por fjpg (135 intervenciones) el 09/12/2019 16:42:02
Yo tampoco tengo mucha idea de programación....

Ahora no estoy en casa, hablo de memoria...
Si no recuerdo mal, para el código del combobox también tienrs que cambiar la hoja....

Luego cuando esté en casa le doy un vistazo!!
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: 286
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Contraseña para entrar en una hoja de Excel desde código

Publicado por fjpg (135 intervenciones) el 09/12/2019 18:30:29
Te pongo el codigo que tengo y comentarios.

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
Private Sub CommandButton1_Click()
    Dim titulo As String
 
    titulo = " ACCESO USUARIOS "
 
    ' AQUI COLOCA LA HOJA DONDE TENGAS LA LISTA DE USUARIOS. EN ESTE CASO HOJA 2
    conteo = Hoja2.Range("a1048576").End(xlUp).Row + 1
 
   'VALIDAMOS CONTROLES VACIOS
    If usuario = "" Then
        MsgBox "El campo USUARIO no puede quedar vacío!", vbCritical, titulo
        Exit Sub
            ElseIf password = "" Then
                MsgBox "El campo CONTRASEÑA no puede quedar vacía!!", vbCritical, titulo
                Exit Sub
            End If
 
 
    For i = 2 To conteo
 
        ' AQUI COLOCA LA COLUMNA DONDE TIENES LOS USUARIOS. EN ESTE CASO "HOJA 2 / COLUMNA C"
        If Hoja2.Range("c" & i).Value = Me.usuario.Value Then
 
            ' AQUI COLOCA LA COLUMNA DONDE TIENES LAS CONTRASEÑAS. EN ESTE CASO "HOJA 2 / COLUMNA D"
            If Hoja2.Range("d" & i).Text = Me.password.Value Then
 
            'MSGBOX SI ENCUENTRA EL USUARIO
                MsgBox "Hola " & Me.usuario & " !!", vbInformation, titulo
                End
            Else
 
 
        ' MSGBOX SI NO ENCUENTRA USUARIO
 
                MsgBox "La CONTRASEÑA no es correcta." + Chr(13) + "¡¡Introduce la contraseña válida!!", vbCritical, titulo
 
 
                usuario = ""
                password = ""
                Exit Sub
            End If
         End If
    Next
End Sub
 
''' BLOQUEAMOS LA X DEL FORM
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode <> vbFormControlMenu Then
            Cancel = 0
 
        Else
            Cancel = 1
            MsgBox "Debes de LOGUEARTE para cerrar el formulario", vbCritical, " ACCESO USUARIOS "
    End If
End Sub
 
 
Private Sub usuario_Enter()
Dim Fila As Long
Dim Final As Long
Dim Lista As String
 
    For Fila = 1 To usuario.ListCount
        usuario.RemoveItem 0
    Next Fila
 
'AQUI CAMBIA LA HOJA Y LA COLUMNA DONDE TENGAS LOS USUARIOS. EN ESTE CASO "HOJA 2 / COLUMNA 3"
Final = Hoja2.Cells(Rows.Count, 3).End(xlUp).Row
 
    For Fila = 2 To Final
        Lista = Hoja2.Cells(Fila, 3)
        usuario.AddItem (Lista)
    Next
End Sub

Si aun asi no te funciona, sube el archivo y vemos que se puede hacer.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 177
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Contraseña para entrar en una hoja de Excel desde código

Publicado por Albert (204 intervenciones) el 11/12/2019 14:22:11
Buenos dias, te lo envio para que veas que sigue fallando
Si entras como "Ana" pasword "1"
cuando les das a aceptar sale "error 1004 en tiempo de ejecucón"
"Error en el método "Range" de objeto '_ worksheet' "
no se que es lo que ocurre

Gracias por tu interes
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: 286
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Contraseña para entrar en una hoja de Excel desde código

Publicado por fjpg (135 intervenciones) el 11/12/2019 18:28:09
Pues creo que puede ser la version de office.
Al abrir el archivo me da error de compilacion. Me pide actualizar el codigo para la version de 64 bits.

A ver si algun experto de por aqui puede ayudarte.
Lo siento Albert!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

contraseñaContraseña para entrar en una hoja de Excel desde código

Publicado por JuanC (565 intervenciones) el 08/12/2019 23:54:41
está mal la línea

1
Call SetFocus.SetFocus

correcto
1
Call Me.TextBox3.SetFocus
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