La Web del Programador: Comunidad de Programadores
 
    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