Pregunta: | 65422 - MACRO MUY LENTA |
Autor: | Oriol Plana |
Tengo esta macro que lo único que pretende es copiar los campos de una hoja (pantalla de entrada) y copiarlos en otra a modo de base de datos (consulta). El problema es que me tarda unos 30s cada vez que la ejecuto y el aplicativo se vuelve muy pesado de utilizar. He aprendido visual en los últimos dos días y seguro que hay una forma más fácil de hacer lo que quiero.
Copio la macro para ver si alguien lo puede solucionar. Muchas gracias Public Sub new_client() Dim fila_1 As Integer Dim fila_2 As Integer Dim col_1 As Integer fila_1 = 2 fila_2 = 8 col_1 = 3 While fila_1 < 1000 If Hoja3.Cells(fila_1, 2) = "" Then While fila_2 < 49 Hoja3.Cells(fila_1, col_1) = Hoja16.Cells(fila_2, 5) fila_2 = fila_2 + 2 col_1 = col_1 + 1 Hoja3.Cells(fila_1, 22) = Hoja16.Cells(54, 9) Hoja3.Cells(fila_1, 23) = Hoja16.Cells(56, 9) Hoja3.Cells(fila_1, 1) = Hoja3.Cells(fila_1, 3) + "-" + Hoja3.Cells(fila_1, 14) + "-" + Hoja3.Cells(fila_1, 15) Hoja3.Cells(fila_1, 2) = Hoja3.Cells(fila_1, 3) + "-" + Hoja3.Cells(fila_1, 15) Wend End If fila_1 = fila_1 + 1 Wend End Sub |
Respuesta: | Gonzalo Quintana |
Oriol Plana:
Porque no pruebas agregandole al principio del código lo siguiente: Application.ScreenUpdating = False y por ahi bajando col_1 y fila_2 a Byte, o sea Dim col_1 as Byte (Byte, valor de 0 a 255) Dim fila_2 as Byte Va a hacer que las variables ocupen menos espacio y por lo tanto más rápida Por lo demás, el código me parece bastante simple Comentás?? Saludos, Guli |