Excel - Optimizar Codigo

   
Vista:

Optimizar Codigo

Publicado por adrian (16 intervenciones) el 03/02/2016 18:07:39
Hola,gente ayudenme a optimizar este codigo ...se que el codigo no parece pesado pero cuando ejecuto mi macro en excel se cuelga...pero desarrolla el codigo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
For coñ = 0 To ult
    valorpe = Range("K" & coñ).Value
        If valorpe <= 0.02 Then
 
            If valorpe = 0 Then
                BonoM = 350
            End If
 
            If valorpe > 0 And valorpe <= 0.01 Then
                BonoM = 250
            End If
 
            If valorpe > 0.01 And valorpe <= 0.015 Then
                BonoM = 150
            End If
 
            If valorpe > 0.015 And valorpe <= 0.02 Then
                BonoM = 100
            End If
 
            Range("M" & coñ).Value = BonoM
 
        Else
        Range("M" & coñ).Value = "0"
        End If
 
Next coñ7


Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Optimizar Codigo

Publicado por adrian (16 intervenciones) el 03/02/2016 18:18:41
Olvidenlo, fue mi error jajaja srry.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar

Optimizar Codigo

Publicado por agustin (149 intervenciones) el 03/02/2016 18:39:25
Se puede optimizar los condicionales ya que tu compruebas todas las condiciones aunque se haya cumplido la primera:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Application.ScreenUpdating = False
Application.DisplayStatusBar = True
Application.StatusBar = "Iniciando..."
For contador = 1 To ult
   valorpe = Range("K" & contador).Value
   If valorpe <= 0.02 Then
      If valorpe = 0 Then
         BonoM = 350
      ElseIf valorpe > 0 And valorpe <= 0.01 Then
         BonoM = 250
      ElseIf valorpe > 0.01 And valorpe <= 0.015 Then
         BonoM = 150
      ElseIf valorpe > 0.015 Then
         BonoM = 100
      End If
      Range("M" & contador).Value = BonoM
   Else
      Range("M" & contador).Value = "0"
   End If
Next contador
Application.ScreenUpdating = True
Application.StatusBar = "Ejecución terminada."
PD: lo he optimizado todo lo que pude quitando también algún condicional redundante. Prueba este y el tuyo y dinos si se aprecia diferencia de velocidad.
PD2: creo que desactivando la actualización de la pantalla y actualizando la al final tan bien conseguirías acelerarlo un poco y por eso lo coloco.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar

Optimizar Codigo

Publicado por adrian (16 intervenciones) el 03/02/2016 23:40:22
Si,los else es lo que me falto colocar por eso dije que fue un error mio y sobre Application.ScreenUpdating lo utilizo solo que esta en una parte mas arriba del código, pero igual muchas gracias agustin me sirvió es mas rápido el proceso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar