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 respuesta
Respuesta de fejoal
1
1
fejoal, Por falta de tiempo para responder como me gusta hacerlo suspendo...
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ó.