Semáforo

Quisiera que por favor ma ayudaras a resolver este problema que tengo, en la celda a1 esta la meta y en la celda b1 esta el real quiero que en la celda d1 me aparezca en rojo y parpadeando, es muy importante que parpadee (flashee) si el real sobre paso la meta en amarillo si es igual y en verde si esta no sonrepasa. Lo que quiero que flasheee puede ser una celda o una imagen pero es importante que fhashee.
1

1 respuesta

Respuesta
1
Deberás usar un código de Visual Basic asociado a algún Evento. Por ejemplo al cambiar el valor de la celda B1 (Real).
Para ello, en tu archivo donde se hará el control, activa el editor de Visual Basic (presiona Alt+F11).
) Y busca la hoja donde quieres que esto ocurra (donde está el "real"). Da doble click sobre ella.
Copia el código siguiente y pégalo en el panel desplegado a la derecha de su Editor de Visual Basic:
Copia el código siguiente y pégalo en el panel desplegado a la derecha de tu Editor de Visual Basic:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If "D3" = Target.Address(False, False) Then
If Sheets("Hoja2").Range("D3").Value > Sheets("Hoja2").Range("C3").Value Then
Sheets("Hoja2").Select
Range("D3").Select
'sonido:
For Cicl = 1 To 15
Beep
Next Cicl
' Parpadeo
'Efecto de parpadeo para celdas con valores
'autor: Mauricio Baeza (aquí VALEDOR)
Application.EnableEvents = False
'variables
Dim Pausa As Single
Dim Inicio As Single
Dim Fin As Single
Dim Contenido() As Variant
Dim rDatos As Range, c As Range
Dim Mostrar As Boolean
Dim co1 As Integer
Dim RestoForm As Variant
Pausa = 0.25
Fin = Timer + 5
RestoForm = ""
If Target.HasFormula Then RestoForm = Target.Formula
Set rDatos = Target
ReDim Contenido(rDatos.Count - 1)
For Each c In rDatos
Contenido(co1) = c.Value
co1 = co1 + 1
Next c
co1 = 0
Mostrar = True
Do
Inicio = Timer
Do While Timer < Inicio + Pausa
DoEvents
Loop
If Mostrar Then
Application.ScreenUpdating = False
For Each c In rDatos
c.Value = Contenido(co1)
co1 = co1 + 1
Next c
Application.ScreenUpdating = True
co1 = 0
Mostrar = False
Else
Mostrar = True
rDatos.ClearContents
End If
DoEvents
Loop While Timer < Fin
Application.ScreenUpdating = False
For Each c In rDatos
c.Value = Contenido(co1)
co1 = co1 + 1
Next c
Application.ScreenUpdating = True
Erase Contenido
Set rDatos = Nothing
If Len(RestoForm) > 0 Then Target.Formula = RestoForm
Application.EnableEvents = True
End If
End If
End Sub
Este ejemplo controla en la Hoja2 que la celda "D3" (real) sea mayor que la "C3" (meta). Obviamente varía estas referencias de acuerdo a las tuyas propias.
Cierra el Editor y graba el archivo.
Ante cada cambio en esta hoja, la macro verificará si fue en la celda D3 y que esta supere a C3, llevará el cursor a esa celda (con una señal audible) y comenzará a parpadear durante un tiempo.
Destaco que la rutina para el parpadeo es una adaptación de una macro desarrollada por un notable experto de este sitio conocido como Valedor. A tal rutina, le agregue la funcionalidad de que pudiese haber en la celda que parpadee un valor o una fórmula.
Fiuuu, no fue fácil...
Esto debería resolver tu pregunta. Si así fuera, agradeceré un comentario y que la finalices.
Si no, pregúntame de nuevo.
Un abrazo!
Fernando
"Me lo explicaron y lo olvidé,
lo leí y lo entendí,
lo hice y lo aprendí".
*====================================*
(Considera que la valoración que figura predeterminada
es 3/5. Tal vez quieras cambiarla...)
En caso contrario, puedes preguntarme nuevamente
aclarando qué entendí mal o qué faltó.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas