Realizar una validación en una Macro con una lista

Hola de nuevo:
La anterior respuesta adecuándola a mis necesidades ha sido de gran ayuda, Gracias
Ahora me gustaría rematar el formulario.
No se si es posible, tengo en un formulario, al rellenar el formulario necesito que uno de los Textbox a rellenar tenga una validación, y es que ese dato que introduzco no quiero que se repita cuando rellene otra vez el formulario.
No se si me he explicado bien así que pongo un pequeño ejemplo de lo que necesito.
Por ejemplo, necesito rellenar una tabla a través de un formulario y una de las casillas hay que poner una clave, pues bien, necesitaría que esa clave no me dejará ponerla más veces cuando vaya a rellenar otra vez el formulario.
De momento, ya lo tengo hecho con la opción de validación pero cuando introduzco el dato lo copia en la celda y pone el simbolito de error pero me permite dejarlo. Quiero prohibirlo en el formulario.
Un saludo, Diego.

1 Respuesta

Respuesta
1
Aquí nuevamente tenés que utilizar el evento Exit tal como la rutina anterior, solo que esta vez cuenta las veces que el valor ingresado ya está en la hoja (CONTAR. SI).
Si ese valor es > que 0 significa que ya está y por lo tanto no podrás avanzar hasta ingresar un valor distinto.
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
nro = Application.WorksheetFunction.CountIf(Range("C2:C20"), TextBox3.Value)
If nro > 0 Then
Cancel = True
End If
End Sub
Ajustá tu rango y el nbre del control.
Hola Elsa:
Muchas gracias, la respuesta ha sido muy buena, gracias, pero... tengo una duda El rango que hemos puesto es en este caso C2:C20, pero a la siguiente vez que introduzca otro dato es necesario que el rango será C2:C21, y así sucesivamente, ¿se cambia solo?, ¿No habría que modificar nada?.
Un saludo,
Diego
Podes dejar un rango lo suficientemente amplio que te asegure ingresos futuros o buscar la última fila de este rango, agregando esta línea al inicio:
fila = activesheet.range("C65536").End(xlup).Row
Luego en la instrucción reemplazá la parte del Range(...) por esto:
Range("C2:C" & fila)
Si no se trata de la hoja activa reemplazá ActiveSheet por Sheets("tu_hoja")

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas