evento Worksheet_Calculate

19/06/2006 - 12:38 por gongi | Informe spam
Hola,un cordial saludo
Por favor si alguien puede ayudarme con lo siguiente,

En la Hoja2 - Celda $S$6, del libro activo, tengo una función que
devuelve VERDADERO si encuentra el contenido de una celda repetido:

=O(S1=S2;S1=S3;S1=S4;S2=S1;S2=S3;S2=S4;S3=S1;S3=S2;S3=S4;S4=S1;S4=S2;S4=S3)

(supongo que esta función es manifiestamente mejorable)
Esta función evalua un rango de cuatro celdas S1:S4, cuyo contenido
se obtiene de la Hoja1. (mediante BUSCARV)

Este resultado, a su vez, lo envio a la siguiente macro:

Private Sub Worksheet_Calculate()

' examina el valor de la celda S6 cuando se recalcula y muestra un
mensaje solo si verdadero



If Range("S6").Value = True Then

MsgBox " Existen registros duplicados"
End If

End Sub

Esto es así porque en la Hoja1 existe un cuadro combinado en el que se
eligen los registros y que se "alimenta" de una tabla o lista de la
hoja2 Pero ¿ existe la posibildad de que el mensaje se le muestre al
usuario en la Hoja1, donde trabaja con los registros ?
Un cordial saludo
 

Leer las respuestas

#1 Héctor Miguel
19/06/2006 - 19:47 | Informe spam
hola, Domingo ?

En la Hoja2 - Celda $S$6... tengo una funcion que devuelve VERDADERO si encuentra el contenido de una celda repetido:
=O(S1=S2;S1=S3;S1=S4;S2=S1;S2=S3;S2=S4;S3=S1;S3=S2;S3=S4;S4=S1;S4=S2;S4=S3)
(supongo que esta funcion es manifiestamente mejorable)
... cuyo contenido se obtiene de la Hoja1. (mediante BUSCARV)



=> prueba con: =sumaproducto(contar.si(s1:s4;s1:s4)-1)>0

Este resultado, a su vez, lo envio a la siguiente macro:
Private Sub Worksheet_Calculate()
' examina el valor de la celda S6 cuando se recalcula y muestra un mensaje solo si verdadero
If Range("S6").Value = True Then
MsgBox " Existen registros duplicados"
End If
End Sub

... en la Hoja1... un cuadro combinado... se eligen los registros y que se "alimenta"... de la hoja2
... existe la posibildad de que el mensaje se le muestre al usuario en la Hoja1, donde trabaja con los registros ?



=> si quieres evitar el uso de codigo en el evento calculate de la hoja2 [a menos que sea necesario para otros asuntos] -?-
puedes poner en alguna celda de la hoja1 una [especie de] 'alerta visual' [que podrias complementar con formatos condicionales]
usando una formula [basada en la anterior] +/- como sigue:
=si(sumaproducto(contar.si(hoja2!s1:s4;hoja2!s1:s4)-1)>0;"existen registros duplicados !!!";"")

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Preguntas similares