VALIDACION MULTIPLE EN MISMA CELDA

04/07/2006 - 13:35 por Almeida Cox | Informe spam
De el siguiente antiguo mensaje:

http://groups.google.com/group/micr...a737a4b1bb

he rescatado este código:

en el modulo de codigo de la hoja ==Dim Tiene_VD As Boolean, _
Anterior As String, Ya_Estan As String, Actual As String
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
On Error Resume Next
Tiene_VD = Target.Validation.Type > 0
If Not Tiene_VD Then Exit Sub
Application.EnableEvents = False
If Len(Target) > 0 Then
If Anterior <> "" Then
Ya_Estan = "|" & Application.Substitute(Anterior, ",", "|") & "|"
Actual = "|" & Target & "|"
If Len(Ya_Estan) > Len(Application.Substitute(Ya_Estan, Actual,
"")) _
Then Target = Anterior Else Target = Anterior & "," & Target
End If
Else: Target.ClearContents
End If
Anterior = CStr(Target)
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 Then Anterior = CStr(Target)
End Sub


He intentado aplicarlo y funciona perfectamente (por cierto que es
GENIAL!!!, MUY útil) PERO tengo un problema, una especie de "efecto
secundario":

- Cuando selecciono una celda (con contenido, por ejemplo un texto
cualquiera) pulsando dos veces sobre ella (como si fuese a editarla) y
acto seguido pulso una vez sobre otra celda cualquiera... el contenido
de la primera celda se duplica automáticamente!!

Quizá es porque yo utilizo EXCEL 2003 y ese código es del año
2004... no se. Si alguien pudiese ayudarme a corregir ese "efecto
secundario", por favor... creo que es un código MUY UTIL para mejorar
muchas de las hojas que hacemos.

Preguntas similare

Leer las respuestas

#1 Gino A. Piazza
04/07/2006 - 14:09 | Informe spam
Realmente utilice el codigo y me parece GUAOO Excelente y de gran utilidad
espero podamos seguir ayudando asi al grupo.. lo utilice con Office 2003 y
no me surgieron problemas hasta el momento.

Gracias por esta inclusion

Saludos





"Almeida Cox" escribió en el mensaje
news:
De el siguiente antiguo mensaje:

http://groups.google.com/group/micr...a737a4b1bb

he rescatado este código:

en el modulo de codigo de la hoja ==Dim Tiene_VD As Boolean, _
Anterior As String, Ya_Estan As String, Actual As String
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
On Error Resume Next
Tiene_VD = Target.Validation.Type > 0
If Not Tiene_VD Then Exit Sub
Application.EnableEvents = False
If Len(Target) > 0 Then
If Anterior <> "" Then
Ya_Estan = "|" & Application.Substitute(Anterior, ",", "|") & "|"
Actual = "|" & Target & "|"
If Len(Ya_Estan) > Len(Application.Substitute(Ya_Estan, Actual,
"")) _
Then Target = Anterior Else Target = Anterior & "," & Target
End If
Else: Target.ClearContents
End If
Anterior = CStr(Target)
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 Then Anterior = CStr(Target)
End Sub


He intentado aplicarlo y funciona perfectamente (por cierto que es
GENIAL!!!, MUY útil) PERO tengo un problema, una especie de "efecto
secundario":

- Cuando selecciono una celda (con contenido, por ejemplo un texto
cualquiera) pulsando dos veces sobre ella (como si fuese a editarla) y
acto seguido pulso una vez sobre otra celda cualquiera... el contenido
de la primera celda se duplica automáticamente!!

Quizá es porque yo utilizo EXCEL 2003 y ese código es del año
2004... no se. Si alguien pudiese ayudarme a corregir ese "efecto
secundario", por favor... creo que es un código MUY UTIL para mejorar
muchas de las hojas que hacemos.
Respuesta Responder a este mensaje
#2 Gino A. Piazza
04/07/2006 - 15:21 | Informe spam
SALUDOS DESPUES DE VER TU PREGUNTA ENTENDI..

REALMENTE NO SE COMO EVITAR QUE SE ANEXE EL VALOR DE LO QUE QUIERES
MODIFICAR PERO PARA EVITAR QUE ESTO SUCEDA SUPRIMES EL CONTENIDO DE LA CELDA
Y LUEGO COLOCAS EL VALOR QUE QUIERES INCLUIR..






"Gino A. Piazza" escribió en el mensaje
news:
Realmente utilice el codigo y me parece GUAOO Excelente y de gran utilidad
espero podamos seguir ayudando asi al grupo.. lo utilice con Office 2003 y
no me surgieron problemas hasta el momento.

Gracias por esta inclusion

Saludos





"Almeida Cox" escribió en el mensaje
news:
De el siguiente antiguo mensaje:

http://groups.google.com/group/micr...a737a4b1bb

he rescatado este código:

en el modulo de codigo de la hoja ==> Dim Tiene_VD As Boolean, _
Anterior As String, Ya_Estan As String, Actual As String
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
On Error Resume Next
Tiene_VD = Target.Validation.Type > 0
If Not Tiene_VD Then Exit Sub
Application.EnableEvents = False
If Len(Target) > 0 Then
If Anterior <> "" Then
Ya_Estan = "|" & Application.Substitute(Anterior, ",", "|") & "|"
Actual = "|" & Target & "|"
If Len(Ya_Estan) > Len(Application.Substitute(Ya_Estan, Actual,
"")) _
Then Target = Anterior Else Target = Anterior & "," & Target
End If
Else: Target.ClearContents
End If
Anterior = CStr(Target)
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 Then Anterior = CStr(Target)
End Sub


He intentado aplicarlo y funciona perfectamente (por cierto que es
GENIAL!!!, MUY útil) PERO tengo un problema, una especie de "efecto
secundario":

- Cuando selecciono una celda (con contenido, por ejemplo un texto
cualquiera) pulsando dos veces sobre ella (como si fuese a editarla) y
acto seguido pulso una vez sobre otra celda cualquiera... el contenido
de la primera celda se duplica automáticamente!!

Quizá es porque yo utilizo EXCEL 2003 y ese código es del año
2004... no se. Si alguien pudiese ayudarme a corregir ese "efecto
secundario", por favor... creo que es un código MUY UTIL para mejorar
muchas de las hojas que hacemos.


Respuesta Responder a este mensaje
#3 Almeida Cox
04/07/2006 - 17:38 | Informe spam
Gracias por confirmar el "efecto secundario" de este código en EXCEL
2003.

Por cierto que... en teoría... el código creo que únicamente
debería afectar a las celdas sobre las cuales se aplica una
VALIDACIÓN... pero por lo que yo he visto, el "efecto secundario" lo
sufre la hoja entera (tanto las celdas con validación como las que no
tienen validación).
Respuesta Responder a este mensaje
#4 Almeida Cox
04/07/2006 - 22:49 | Informe spam
Debajo de:
Private Sub Worksheet_Change(ByVal Target As Range)

He insertado estas dos lineas:
Set rngDV = Cells.SpecialCells(xlCellTypeAllValidation)
If Intersect(Target, rngDV) Is Nothing Then Exit Sub

Creo que con esto se limita el "efecto secundario" a las celdas
validadas. De hecho creo que estas dos lineas simplemente hace que el
código afecte únicamente a las celdas que tienen VALIDACION, dejando
el resto de la hoja limpia.

No he hecho muchas pruebas, pero por ahora creo que me funciona :)
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida