Eliminar parpadeo

12/07/2005 - 13:04 por ricard | Informe spam
Hola,
Hice una macro que cuando los valores
de un rango determinado fuera <0, el valor se mostrara en rojo
y en intermitente, esto lo consegui, pero el problema lo tengo al intertar
eliminar el parpadeo que se produce en toda la hoja.
A continuación detallo lo que he hecho:

1) Crear una formula denominada Timer
=ISEVEN(SEGUNDO(AHORA()))
2) Crear Formato condional
=Timer
3) En ThisWorkbook he puesto el codigo:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
DetenerParpadeo
End Sub

Private Sub Workbook_Open()
IniciarParpadeo
End Sub

4) En modulo he puesto el codigo

Dim dtSiguiente As Date
Private Sub Worksheet_Calculate()
Call IniciarParpadeo
End Sub
Sub IniciarParpadeo()
Dim Fila As Long
Dim TotalFilas As Long
dtSiguiente = Now + TimeValue("00:00:01")
Application.ScreenUpdating = True
For Fila = 10 To TotalFilas
If (Cells(Fila, 4) < 0) Then
Application.OnTime dtSiguiente, "IniciarParpadeo"
End If
Next Fila
End Sub


Sub DetenerParpadeo()
Application.OnTime dtSiguiente, "IniciarParpadeo", schedule:=False
End Sub

El resultado es que cuando ejecuto la macro iniciar parpadeo los valores
parpadean en rojo pero el parpadeo de toda la hoja es insufible.

Aprovecho para preguntar que diferencia hay entre ThisWorkbook y Modulo
podriamos decir que ThisWorkbook es la clase principal.

Gracias por todo
 

Leer las respuestas

#1 KL
12/07/2005 - 14:13 | Informe spam
Hola Ricard,

Creo que te has perdido tanto alguno de mis comentarios como la nota de
Hector Miguel en respuesta a tu consulta en el hilo anterior. Prueba hacer
lo siguiente:

1) Crea una formula denominada Timer
=RESIDUO(SEGUNDO(HOY());2)=1

2) Selecciona el rango D10:DN (donde N es el numero de la ultima fila de tu
rango)

3) Aplica Formato Condional
=Timer*(D10<0)

4) En ThisWorkbook pon el codigo:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
DetenerParpadeo
End Sub

Private Sub Workbook_Open()
IniciarParpadeo
End Sub

5) En un modulo estandar pon el codigo

Dim dtSiguiente As Date

Private Sub Worksheet_Calculate()
IniciarParpadeo
End Sub

Sub IniciarParpadeo()
dtSiguiente = Now + TimeValue("00:00:01")
Application.Calculate
Application.OnTime dtSiguiente, "IniciarParpadeo"
End Sub

Sub DetenerParpadeo()
Application.OnTime dtSiguiente, "IniciarParpadeo", schedule:=False
End Sub

Aprovecho para preguntar que diferencia hay entre ThisWorkbook y Modulo
podriamos decir que ThisWorkbook es la clase principal.



Bueno, pongamos que el modulo de ThisWorkbook es un modulo de clase (o sea
perteneciente a un objeto) como lo son los modulos de hojas, de formularios
y otros modulos de clase definidos por el usuario, mientras que un modulo
estandar es un modulo generico que no pertenece a ningun objeto y esta
disponible para todos los demas modulos sin necesidad de calificarlo
expresamente. Espero no haberte liado aun mas.

Saludos,
KL

Preguntas similares