Macro con lentitud

15/05/2004 - 04:46 por Compumakro | Informe spam
Amigos:
La siguiente Macro ocasionó mucha lentitud en sus procesos, pero solamente
en la hoja donde está.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Juanca As Integer
For Juanca = 2 To 500
If Cells(Juanca, 6) = 3 Then
Cells(Juanca, 7) = "DIRECTO"
End If
If Cells(Juanca, 6) = 5 Then
Cells(Juanca, 7) = "MISION"
End If
If Cells(Juanca, 6) = 7 Then
Cells(Juanca, 7) = "COLTEMPORA"
End If
If Cells(Juanca, 6) = 9 Then
Cells(Juanca, 7) = "BACAGRA"
End If
If Cells(Juanca, 6) = "" Then
Cells(Juanca, 7) = ""
End If
Next Juanca
End Sub

Hay alguna forma para que no la ponga tan lenta?

Gracias
Oscar
Barranquilla
 

Leer las respuestas

#1 Héctor Miguel
15/05/2004 - 08:19 | Informe spam
hola, Oscar !

La siguiente Macro ocasiono mucha lentitud en sus procesos, pero solamente en la hoja donde esta [...]
Hay alguna forma para que no la ponga tan lenta?



algunas 'observaciones' del 'porque' de la lentitud...
1.- es un 'ciclo' que [invariablemente] recorre 499 celdas y 'revisa' 5 [posibles] 'comparaciones'
... lo que 'ocasiona' [practicamente] 2,500 'detenciones' del codigo :((
2.- esta 'asociado' a [puesto en] el evento '_SelectionChange' de 'la hoja' [donde 'ocasiona' la lentitud]
... el cual, se 'dispara' CADA VEZ que el usuario cambia de seleccion de la celda 'activa' :((
[como nota 'adicional', al modificarse una celda, el evento se 're-dispara' -aun SIN 'cambiar' de celda-]
3.- si [realmente] es 'ahi' donde la necesitas [y 'tal como esta']...
prueba usando como primera instruccion un =>Application.ScreenUpdating = False<
seria 'bueno' revisar lo que [realmente] necesitas 'obtener' con [y 'cuando' deberia ejecutarse] la macro ;)
¿comentas?
saludos,
hector.

Preguntas similares