Formato intermitente

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
1
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?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas