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

Preguntas similare

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
Respuesta Responder a este mensaje
#2 KL
14/07/2005 - 13:21 | Informe spam
Hola de nuevo,

acabo de darme cuenta de que al copiar y pegar el codigo se me habia colado
un procedimiento que tu habias anadido, pero que no es necesario y deberia
eliminarse:

Private Sub Worksheet_Calculate()
IniciarParpadeo
End Sub



Saludos,
KL


"KL" wrote in message
news:
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

Respuesta Responder a este mensaje
#3 Ch0rY
25/08/2005 - 01:02 | Informe spam
Es eso valido para mi?

Estoy generando un serie de Hojas mediante código, partiendo de una
tabla de access, y en las que solo hay texto, simplemente se ve como va
añadiendo el texto y dando formato a la hoja, pero en las que llevan
imagenes, es un rollo, cada cambio que hace en una celda, parpadeo al
canto.

Seria posible, ocultar la hoja mientras se actualiza?

gracias
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida