Evitar entradas repetidas...

Hola:
Espero me pudieras ayudar, necesito una rutina en VB para aplicarlo en excel en la cual se evite la entrada de números o palabras repetidas en una columna determinada y que de ocurrir esto se dé un mensaje de alerta como "ERROR, ESTE NUMERO O PALABRA YA SE ENCUENTRA EN LA BASE DE DATOS" y ademas se evite la entrada del dato. Estoy usando los formularios automáticos que vienen con excel
Gracias de antemano por tu valiosa ayuda.
Respuesta
1
Micky030276,
Tendrías que crear un macro en el archivo de excel. En el código de la hoja donde se encuentra la columna que quieres validar deberías poner lo siguiente:
Private Sub Worksheet_Change(ByVal Target As Range)
'Si la columna es A
If (Target.Column = 1) Then
'Si la celda posee algo
If (Target.Value <> "") Then
If (buscarContenido(Target.Value, Target.Row)) Then
MsgBox "ERROR, ESTE NUMERO O PALABRA YA SE ENCUENTRA EN LA BASE DE DATOS."
End If
End If
End If
End Sub
Private Function buscarContenido(valor As String, celda As Long) As Boolean
Dim rgRango As Range
Dim i As Long
buscarContenido = False
Set rgRango = Range("A1:A65536")
'Recorro todas las celdas de la primer columna
For i = 1 To rgRango.Cells.Count
'Si encuentra una celda vacía deja de buscar, se puede
'comentar para que siempre busque en toda la columna.
If rgRango(i).Value = "" Then Exit For
If Trim(rgRango(i).Value) = Trim(valor) And i <> celda Then
buscarContenido = True
Exit For
End If
Next i
End Function
Cada vez que se cambie un dato de la columna que queremos validar se llama a la función buscarContenido(). Yo lo probé y funciono.
Cualquier cosa, no dudes en avisarme.

1 respuesta más de otro experto

Respuesta
1
No entiendo bien la pregunta, ¿estas programando una macro? ¿Con el excel?, aclarame esto y también la version de Visual BAsic que usas y la de Excel.
Lo que necesito es evitar que en una columna de excel se repitan datos, los cuales se introducen mediante el formulario automático que trae excel para la introducción de datos. La version de excel es la 2003 y el visual basic lo trae incluido es la version 6.3, Solo necesito una rutina que me evite las entradas, es decir que compare los datos ingresados y que evite que se repitan datos.
El procedimiento seria algo así:
For x = 1 To 10
For z = 1 To 10
If Not z = x Then
If Not Len(Hoja1.Cells(z, 1)) = 0 Then
If Hoja1.Cells(x, 1) = Hoja1.Cells(z, 1) Then
MsgBox "valor Repetido " & Hoja1.Cells(z, 1)
Exit Sub
End If
End If
End If
Next z
Next x
Lo tienes que colocar primero que cualquier sentencia
que ingrese datos, me imagino que si ingresas datos
a través de un formulario debes tener algún botón que
valide los datos, justo antes de esa sentencia de validación
coloca el código de arriba.
Fíjate que el código busca las entradas repetidas desde
A1 a A10 o sea te busca en las 10 primeras filas.
Espero que de algo te sirva, se que no es exactamente
lo que buscas, pero espero que te abra un poco la mente
para seguir buscando otras maneras mejores de lograr tu
objetivo, tengo un pequeño manual de referencia, si lo
quieres te lo paso por mail.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas