Tengo una macro de borrado q linpia lineas a la cual deseo agregar barra de progreso

te anexo la macro que tengo a la cual necesito agregarle una barra de progreso para ver el estado de la misma al ejecutarse
Sub BORRADO()
Sheets("DIR2").Unprotect ("17919119")
'
' BORRADO Macro
'
' Acceso directo: Ctrl+Mayus+F
'
Range("D2,A:A,A:l").Select
Range("A1").Activate
Range("D2,A:A,A:l,N:BM").Select
Range("N1").Activate
Selection.Replace What:=" ", Replacement:=" ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=" ", Replacement:=" ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=" ", Replacement:=" ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=" ", Replacement:=" ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=" ", Replacement:=" ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=" ", Replacement:=" ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=" ", Replacement:=" ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
espero me puedas ayudar

1 Respuesta

Respuesta
1

No hay como agregarle una barra de progreso toda vez que eso se maneja en formularios, y tu macro me parece que no esta incluida en uno...

Supongo que tu inquietud surge por el hecho de que son muchos reemplazos en rangos grandes y probablemente le toma algo de tiempo a tu Excel... Al respecto 2 observaciones...

1) Si tu macro es exactamente la que muestras no entiendo realmente que estas buscando hacer, pues todos los reemplazos parecen estar convirtiendo un espacio en si mismo... si tu macro es diferente y en esos " " en realidad figura otra cosa, lo entiendo... a simple vista pareciera que tu macro hace un trabajo que no hace nada, y lo hace 7 veces..

2) Si lo que deseas es no "aburrir" al usuario mientras se ejecuta la macro... en lugar de colocar un barra de estado yo aceleraría la macro para que no muestre la actualización en pantalla... esto lo logras colocando esta instuccion al inicio de la macro Application.ScreenUpdating = False y al final Application.ScreenUpdating = True

3) Si aun asi quisiera una simulación de barra de estado, solo puedes manejar texto en esta... es difícil saber que porcentaje de tu macro evalúas que sea cada instrucción pero yo podría estimar que cada una es 1/7 de la macro...

Podrias colocar despues de la primera instruccion de reemplazo lo siguiente

Application.StatusBar = "Trabajando " & format (1/7 ,"0%")

despues de la segunda...

Application.StatusBar = "Trabajando " & format (2/7 ,"0%")

etc...

Y al final, para regresar a la barra de estado normal

Application.StatusBar = false

lo de acelerar lo agregue e igualmente bajo de 7 a 5 minutos es que tengo una base de datos de 10 mil lineas de datos la cual la extrae del servidor via sql a excel y en cada campo le agrega 3 , 4 , 5 , o hasta 6 espacios antes o después de cada palabra y al extraerla para unificar ahi excedentes de espacios por esta razón uso tanto de 5 a1 de 6a1 de 4a1 y asi sucesivamente, gracias de igual forma por la ayuda

Usando el StatusBar algo mostrará...

Me parece exagerado el tiempo que se toma tu PC...

Quizás esta calculando formulas durante el reemplazo y por eso demora...

Podrías probar desactivar el modo de calculo automático al inicio de la macro.

Application.Calculation = xlManual

y al final

Application.Calculation = xlAutomatic

Saludos,

Jaime

PD: Si es suficiente la respuesta finaliza la pregunta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas