Más sobre resaltar con parpadeo.

Valedor:
Hasta este momento he sido uno de tus seguidores "en la sombra", pero a raíz de la pregunta que te ha hecho hoy sobre resaltar datos con parpadeo, necesitaría me ayudaras con lo siguiente:
Si bien la pregunta te pedía sólo la celda activa, ¿cómo podría hacer que un rango de celdas previamente seleccionado parpadeara?
Y otra cuestión más: ¿Cómo podría hacer que parpadearan simultámeamente varias celdas previamente seleccionadas (esto es, que no forman parte de un rango sino que se han seleccionado "sueltas"?
Te agradecería mucho esta gran ayuda, porque hace tiempo que venía buscando esta cuestión.
Aprovecho esta ocasión para felicitaros a todos los expertos en general y a ti en particular por vuestra profesionalidad y compromiso con el resto de los mortales.

1 respuesta

Respuesta
1
La siguiente macro es una variante de la que hace parpadear la celda activa, esta otra, hace
Parpadear TODAS las celdas seleccionadas, siempre y cuando sea más de una, ten cuidado de no
Hacer selecciones muy grandes, con la macro anterior y con esta, hacer la tercera opción, es
Decir, que parpadeen celda NO adyacentes es relativamente fácil, te queda de tarea...
Public Sub ParpadeaSeleccion()
Dim Pausa As Single
Dim Inicio As Single
Dim Fin As Single
Dim Contenido() As Variant
Dim rDatos As Range
Dim Mostrar As Boolean
Pausa = 0.25
Fin = Timer + 5
Set rDatos = Selection
If IsArray(rDatos) Then
Contenido = rDatos.Value
Mostrar = True
Do
Inicio = Timer
Do While Timer < Inicio + Pausa
DoEvents
Loop
If Mostrar Then
rDatos.Value = Contenido
Mostrar = False
Else
Mostrar = True
rDatos.ClearContents
End If
DoEvents
Loop While Timer < Fin
rDatos = Contenido
End If
Erase Contenido
Set rDatos = Nothing
End Sub
Valedor:
Cuando te mandé esta pregunta, el ordenador se quedó "colgado" y lo tuve que reiniciar, así que -por si acaso- te la vuelvo a mandar puesto que no sé si te llegó.
Un saludo,
Hans.
Valedor:
Muchas gracias por la macro, funciona a las mil maravillas.
Sin embargo, PARA LAS CELDAS NO ADYACENTES no soy capaz de solucionarlo (a pesar de que según me indicas, es bastante fácil), pero le he estado dando vueltas y no se me ocurre cómo hacerlo.
Por favor, ¿puedes echarme un último cable?
De nuevo, mil gracias.
Saludos,
Hans.
Aparte de esperar a que se nos ocurra algo, también hay que probar, intentar e investigar, tomalo como una critica constructiva...
La siguiente macro hace parpadear las celda no adyacentes seleccionadas, siempre y cuando NO estén vacías, la macro primero selecciona a partir de la selección del usuario, las celdas que NO este vacías, esto es para no trabajar en estas celdas pues es desperdicio de recursos, la macro te dará un error si en la selección no hay al menos una celda con contenido, esta version no me gusta por que tiene que hacer muchos ciclos, de nuevo, cuida de no hacer selecciones muy grandes, de hecho esta también te servirá en selecciones cuadradas como la anterior, pero esta es más lenta, saludos...
Public Sub ParpadeaNoAdyacentes()
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
Pausa = 0.25
Fin = Timer + 5
Selection.SpecialCells(xlCellTypeConstants, 23).Select
Set rDatos = Selection
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
End Sub
¡ Muchas gracias, Valedor !
Tanto por tu brillante solución como por la "crítica" efectivamente constructiva.
Un saludo y hasta pronto.
Hans.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas