Parpadeo de una celda

04/03/2008 - 20:25 por Jorge Alejandro Salas Rodriguez | Informe spam
Hola:
Quiciera ver si alguien sabe como hacer que una celda parpadie cuando su
valor sea un resultado negativo

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
04/03/2008 - 21:50 | Informe spam
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>0)*(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)
Respuesta Responder a este mensaje
#2 R.Garcia
28/04/2008 - 19:34 | Informe spam
"Jorge Alejandro Salas Rodriguez" wrote:

Hola:
Quiciera ver si alguien sabe como hacer que una celda parpadie cuando su
valor sea un resultado negativo





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
Respuesta Responder a este mensaje
#3 R.Garcia
28/04/2008 - 20:01 | Informe spam
"R.Garcia" wrote:



"Jorge Alejandro Salas Rodriguez" wrote:

> Hola:
> Quiciera ver si alguien sabe como hacer que una celda parpadie cuando su
> valor sea un resultado negativo
>
>

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



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 :)
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida