Seleccionar un rando es este código

Hola Expertos.
Me pueden ayudar con este código, el código sirve para validar usuario y contraseña que tengo guardados en una hoja (Usuarios), pero el problema es que cuando el se valida solo me busca en el rango A2 y D2, si tengo otro usuario en A3 y D3 no me lo valida, como hago para ampliar el rango que tiene mi código, porque cuando lo hago de esta forma rango("A2:A10"). Value me muestra error, mi codigo es:
Private Sub CommandButton1_Click()
If UserForm4.TextBox1.Value = Worksheets("Usuarios").Range("A2").Value And UserForm4.TextBox2.Value = Worksheets("Usuarios").Range("D2").Value Then
Unload Me
UserForm1.Show
Else
Unload Me
x = MsgBox("¡¡¡Contraseña Incorrecta, Intente de Nuevo!!!.", vbYes)
UserForm4.Show
End If
End Sub
Nota: en la columna A están los Usuarios y en la Columna DE están las contraseñas.
Gracias

1 respuesta

Respuesta
1
Lo primero es determinar cuantos registros hay que recorres entonces lo hacemos así:
Private Sub CommandButton1_Click()
Dim i As Integer
For i = 2 To Application.WorksheetFunction.CountA(Sheets("Usuarios").Range("A2:A10"))
If UserForm4.TextBox1.Value = Worksheets("Usuarios").Range("A" & i).Value And UserForm4.TextBox2.Value = Worksheets("Usuarios").Range("D" & i).Value Then
Unload Me
UserForm1.Show
End If
DoEvents
Next
Unload Me
x = MsgBox("¡¡¡Contraseña Incorrecta, Intente de Nuevo!!!.", vbYes)
UserForm4.Show
End Sub
Recorres uno a uno los registros y reacciona dependiendo de si existe o no el usuario indicado en el form de login.
Si te sirve CIERRA la pregunta
Gracias experto por responder tan pronto la verdad si la necesito urgente.
Pero tengo un problema, cuando dígito el usuario que esta en A3 y la contraseña que esta en D3 me sale que "Contraseña Incorrecta, Intente de Nuevo" como si no hiciera la validación en la hoja "usuarios" solo me la hace cuando ingreso el usuario que esta en A2 y D3, pero no me hace el recorrido por el rango.
O también me puedes ayudar, lo que quiero es que por medio de un UserForm1 allá 2 textbox uno para ingresar el usuario y otro para ingresar la contraseña, y por medio de un CommandButton al darle click me valide si el usuario esta en una hoja llamada "Usuarios", ejemplo
En la columna A tengo los usuarios, y en la columna DE las contraseñas, que el valide en esa hoja la contraseña y el usuario y si son válidos me muestre un UserForm2 y si no son válidos me salga un mensaje que diga Usuario y contraseña incorrectos.
Te agradezco tu ayuda.
Mil Gracias.
Ok prueba esto, es básicamente lo tuyo, salvo que en vez de utilizar .value utilizo .text
(Recuerda que hay que tratar los datos en función de como operaremos con ellos, ¿o estas pensando hacer operaciones matemáticas con los passwords?)
For i = 2 To Application.WorksheetFunction.CountA(Sheets("Usuarios").Range("A2:A10"))
If UserForm4.TextBox1 = Worksheets("Usuarios").Range("A" & i).Text And UserForm4.TextBox2 = Worksheets("Usuarios").Range("D" & i).Text Then
Unload Me
UserForm1.Show
Exit Sub
End If
DoEvents
Next
Unload Me
x = MsgBox("¡¡¡Contraseña Incorrecta, Intente de Nuevo!!!.", vbYes)
UserForm4.Show
Nota: entre el rango A2 y A10 no deben haber filas vacías, ya que el bucle recorre el total de elementos no vacíos.
Bye
Gracias experto por su valiosa ayuda.
Me puedes aclarar porque cuando ingreso un usuario que esta en la celda A3 y la contraseña esta en D3 no me lo valida, como si no hiciera el recorrido.
Te agradezco tu ayuda
Mil gracias de nuevo por tu tiempo.
Verifica si los datos en la fila 3 tienen algún espacio antes o después recuerda que por ejemplo la cadena "1234" es diferente de "1234 " o de " 1234"
Utiliza la opción =largo() para contar los elementos de la cadena
El bucle debe recorres "todos" los registros desde A2 hasta A10 siempre que no haya espacios entre filas.
Lo pruebo acá y recorre bien. ( Es un bucle nada más), creo que el problema puede estar en los datos.
Muchas gracias.
Ya la arregle y funciona perfecto.
Te dejo el código:
Private Sub CommandButton1_Click()
For i = 1 To Application.WorksheetFunction.CountA(Sheets("Usuarios").Range("A2:A10"), ("D2:D10")) ' aquie estaba el problema
If UserForm4.TextBox1 = Worksheets("Usuarios").Range("A" & i).Text And UserForm4.TextBox2 = Worksheets("Usuarios").Range("D" & i).Text Then
Unload Me
UserForm1.Show
Exit Sub
End If
DoEvents
Next
Unload Me
x = MsgBox("¡¡¡Contraseña Incorrecta, Intente de Nuevo!!!.", vbYes)
UserForm4.Show
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas