Apreciado Fejoal : ¿Existe la posibilidad de que una celda de Excel pueda estar en formato intemitente en función de una determinada condición? Gracias.
1 respuesta
Respuesta de fejoal
1
1
fejoal, Por falta de tiempo para responder como me gusta hacerlo suspendo...
El formato intermitente que permite MS Word, no es una opción disponible en MS Excel. Sin embargo, es posible apelar a una macro para que controle si la condición fue cumplida y simule un parpadeo de celda. Deberás usar un código de Visual Basic asociado a algún Evento. Por ejemplo, la celda D3 se mostrará intermitentemente al cambiar el valor de la celda B1 (donde estará la condición a evaluar y que devolverá 1 si se cumple o cero en caso contrario). 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á la celda intermitente). 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: Private Sub Worksheet_Change(ByVal Target As Excel.Range) 'Quimix ingresa aquí las celdas relevantes: CeldaControl = "B1" celdaInterm = "D3" '--------------------- Gracias Set IntCell = Range(celdaInterm) If Range(CeldaControl).Value = 1 Then ' IntCell.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 IntCell.HasFormula Then RestoForm = IntCell.Formula Set rDatos = IntCell 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 IntCell.Formula = RestoForm Application.EnableEvents = True End If End Sub Este ejemplo controla en la celda B1 sea igual a 1 y hará parpadear a la celda D3. Obviamente varía estas referencias de acuerdo a las tuyas propias. Verás al inicio del código dos variables que te permitaran modificar fácilmente tus propias referencias Cierra el Editor y graba el archivo. 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... En caso contrario, puedes preguntarme nuevamente aclarando qué entendí mal o qué faltó.
He notado que estoy inhabilitado para recibir preguntas, probablemente porque tenga muchas preguntas sin finalizar. Por favor, no te ofendas, pero entre ellas, está ésta, la tuya que contesté el mismo día que la planteaste... ¿Serías tan amable de finalizarla para que otros puedan consultarme?