Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Parpadeo de una celda

1,532 views
Skip to first unread message

Jorge Alejandro Salas Rodriguez

unread,
Mar 4, 2008, 2:25:28 PM3/4/08
to
Hola:
Quiciera ver si alguien sabe como hacer que una celda parpadie cuando su
valor sea un resultado negativo

Héctor Miguel

unread,
Mar 4, 2008, 3:50:39 PM3/4/08
to
hola, Jorge Alejandro !

> ... como hacer que una celda parpadie cuando su valor sea un resultado negativo

te expongo un ejemplo al final, y...
si cualquier duda (o informacion adicional)... comentas?
saludos,
hector.

1) usa (menu) formato / formato condicional... (seleccionando previamente la/s celda/ que va/n a parpadear)
la formula del inciso b) supone que la celda "activa" luego de seleccionar el rango es A1
-> selecciona como condicion... -> formula
-> introduce (alg)una de las siguientes formulas:
a) si no te interesa condicionar (tambien) al valor/contenido/... de dicha/s celda/s...
=residuo(segundo(ahora()),2)=0
b) si necesitas condicionar (p.e.) a que el valor de la celda (1) de la seleccion (p.e. A1) sea >= 100 (... < 0, o... ???)
=(a1>=100)*(residuo(segundo(ahora()),2)=0)
-> aplica (boton formato...) los formatos de tu preferencia (fuente, color, bordes, trama, etc.)

2) copia/pega las siguientes lineas...
=== en un modulo de codigo normal ===
Public Siguiente As Date
Sub IniciarParpadeo()
Siguiente = Now + TimeSerial(0, 0, 1)
Worksheets(1).Calculate
Application.OnTime Siguiente, "IniciarParpadeo"
End Sub
Sub DetenerParpadeo(): On Error Resume Next
Application.OnTime Siguiente, "IniciarParpadeo", Schedule:=False
End Sub
=== en el modulo de codigo del libro (ThisWorkbook) ===
Private Sub Workbook_Open()
IniciarParpadeo
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
DetenerParpadeo
End Sub

3) observa que en la macro IniciarParpadeo (modulo normal)...
hay una linea que dice... -> Worksheets(1).Calculate (incluso pudiera tratarse de una hoja fantasma/oculta/...)
-> si a tu modelo le afecta que (cada TimeSerial(hrs, min, seg)) se este re/calculando la hoja1 del libro
puedes modificar dicha instruccion a... -> Application.ScreenUpdating = True
-> la diferencia entre una instruccion y otra... es que
con el ScreenUpdating... veras un parpadeo general (constante) de la pantalla completa Y del cursor/mouse
con el Calculate... solo veras el (ligero) parpdeo del mouse/cursor, pero... el re/calculo del modelo podria...
-> solo para variar... (parece que) todo tiene sus pros y contras (decide tu cual es cual)


R.Garcia

unread,
Apr 28, 2008, 1:34:01 PM4/28/08
to

Aquí un código que funciona para mi.

Private Sub Worksheet_Calculate()
On Error Resume Next
Dim r, rango
Set rango = Range("c4:c14") 'aquí las celdas que parpadearan
For Each r In rango
If r.Value < 0 Then
Parpadea
Exit Sub
End If
Next
Range("c4:c14").Interior.ColorIndex = 2
Application.OnTime Now + TimeValue("00:00:01"), "Parpadea", , False
'cancela el parpadeo
End Sub

Public Sub Parpadea()
On Error Resume Next
Application.ScreenUpdating = False
Rojo = 3: Blanco = 2
Dim r, rango
Set rango = Range("c4:c14") 'aquí las celdas que parpadearan
For Each r In rango
If r.Value < 0 Then
If r.Interior.ColorIndex = Rojo Then
r.Interior.ColorIndex = Blanco
Else
r.Interior.ColorIndex = Rojo
End If
ElseIf r.Interior.ColorIndex = Rojo Then
r.Interior.ColorIndex = Blanco
End If
Next
Application.ScreenUpdating = True
Application.OnTime Now + TimeValue("00:00:01"), "Parpadea"
End Sub

R.Garcia

unread,
Apr 28, 2008, 2:01:00 PM4/28/08
to

"R.Garcia" wrote:

aquí una versión mejorada:

Private Sub Worksheet_Calculate()
On Error Resume Next

Application.OnTime Now, "Parpadea", , False


Application.OnTime Now + TimeValue("00:00:01"), "Parpadea", , False

Application.OnTime Now + TimeValue("00:00:02"), "Parpadea", , False

Range("c4:c14").Interior.ColorIndex = 2

Dim r, rango
Set rango = Range("c4:c14")

For Each r In rango
If r.Value < 0 Then

Application.OnTime Now + TimeValue("00:00:01"), "Parpadea"

Exit Sub
End If
Next

Application.OnTime Now + TimeValue("00:00:01"), "Parpadea", , False

End Sub


Public Sub Parpadea()
On Error Resume Next
Application.ScreenUpdating = False
Rojo = 3: Blanco = 2
Dim r, rango
Set rango = Range("c4:c14") 'aquí las celdas que parpadearan
For Each r In rango
If r.Value < 0 Then
If r.Interior.ColorIndex = Rojo Then
r.Interior.ColorIndex = Blanco
Else
r.Interior.ColorIndex = Rojo
End If
ElseIf r.Interior.ColorIndex = Rojo Then
r.Interior.ColorIndex = Blanco
End If
Next
Application.ScreenUpdating = True
Application.OnTime Now + TimeValue("00:00:01"), "Parpadea"
End Sub


Salu2 :)

LOGISTICA TEJAR

unread,
Aug 20, 2022, 2:26:20 PM8/20/22
to

LOGISTICA TEJAR

unread,
Aug 20, 2022, 2:26:55 PM8/20/22
to
amigo un tutorial en Youtube quedaria buenisimo...
0 new messages