Visual Basic para Aplicaciones - LENTITUD EN RUTINA

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

LENTITUD EN RUTINA

Publicado por EDUARDO CIFUENTES SOLIS (3 intervenciones) el 11/06/2009 18:01:48
Hola
Tengo una hoja de Excel con varios combobox y sus correspondientes listas desplegables.
El caso es en función de la selección en la lista desplegable 1 (países) se activa o aparece el combo box correspondiente a ciudades de ese país, funciona todo muy bien aparecen y desaparecen, perfecto, lo único es que cada vez que selecciono un país se queda la hoja como pensando, anexo la rutina a ver que me pueden decir para agilizarla un poco, son cerca de 60 rutinas como estas aqui solo les envio un pedazo
Saludos
Eduardo
Private Sub ComboBox1_Change()

Range("D6") = "C.P. O NOMBRE CIUDAD"
'Range("D6").Font.Size = 11

End Sub
Private Sub Worksheet_Calculate()

Dim PAIS As String
'Range("D6").Font.Size = 11
PAIS = Range("P7").Value

If PAIS <> "BAHAMAS" Then
ComboBox2.Visible = False
Else: ComboBox2.Visible = True
End If
If PAIS <> "BRUNEI" Then
ComboBox3.Visible = False
Else: ComboBox3.Visible = True
End If
If PAIS <> "CAMBOYA" Then
ComboBox4.Visible = False
Else: ComboBox4.Visible = True
End If
If PAIS <> "CHILE" Then
ComboBox5.Visible = False
Else: ComboBox5.Visible = True
End If
If PAIS <> "COLOMBIA" Then
ComboBox6.Visible = False
Else: ComboBox6.Visible = True
End If
If PAIS <> "ECUADOR" Then
ComboBox7.Visible = False
Else: ComboBox7.Visible = True
End If
If PAIS <> "EL SALVADOR" Then
ComboBox8.Visible = False
Else: ComboBox8.Visible = True
End If

END SUB
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
Imágen de perfil de JuanC

RE:LENTITUD EN RUTINA

Publicado por JuanC (565 intervenciones) el 12/06/2009 00:54:16
según mi criterio ese fragmento de código no alcanza para saber
dónde están los problemas y, por ende, la 'solución'...

Saludos, desde Baires, JuanC
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
sin imagen de perfil

RE:LENTITUD EN RUTINA

Publicado por EDUARDO CIFUENTES SOLIS (3 intervenciones) el 12/06/2009 09:19:20
te pongo la rutina entera
Option Explicit

Private Sub ComboBox1_Change()

Range("D6") = "C.P. O NOMBRE CIUDAD"
'Range("D6").Font.Size = 11

End Sub
Private Sub Worksheet_Calculate()

Dim PAIS As String
'Range("D6").Font.Size = 11
PAIS = Range("P7").Value

If PAIS <> "BAHAMAS" Then
ComboBox2.Visible = False
Else: ComboBox2.Visible = True
End If
If PAIS <> "BRUNEI" Then
ComboBox3.Visible = False
Else: ComboBox3.Visible = True
End If
If PAIS <> "CAMBOYA" Then
ComboBox4.Visible = False
Else: ComboBox4.Visible = True
End If
If PAIS <> "CHILE" Then
ComboBox5.Visible = False
Else: ComboBox5.Visible = True
End If
If PAIS <> "COLOMBIA" Then
ComboBox6.Visible = False
Else: ComboBox6.Visible = True
End If
If PAIS <> "ECUADOR" Then
ComboBox7.Visible = False
Else: ComboBox7.Visible = True
End If
If PAIS <> "EL SALVADOR" Then
ComboBox8.Visible = False
Else: ComboBox8.Visible = True
End If
If PAIS <> "GUYANA" Then
ComboBox9.Visible = False
Else: ComboBox9.Visible = True
End If
If PAIS <> "HAITI" Then
ComboBox10.Visible = False
Else: ComboBox10.Visible = True
End If
If PAIS <> "HONDURAS" Then
ComboBox11.Visible = False
Else: ComboBox11.Visible = True
End If
If PAIS <> "JAMAICA" Then
ComboBox12.Visible = False
Else: ComboBox12.Visible = True
End If
If PAIS <> "MARIANAS DEL NORTE" Then
ComboBox13.Visible = False
Else: ComboBox13.Visible = True
End If
If PAIS <> "PANAMA" Then
ComboBox14.Visible = False
Else: ComboBox14.Visible = True
End If
If PAIS <> "PAQUISTAN" Then
ComboBox15.Visible = False
Else: ComboBox15.Visible = True
End If
If PAIS <> "PERU" Then
ComboBox16.Visible = False
Else: ComboBox16.Visible = True
End If
If PAIS = "REPUBLICA DOMINICANA" Then
ComboBox17.Visible = True
Else: ComboBox17.Visible = False
End If
If PAIS = "TRINIDAD Y TOBAGO" Then
ComboBox18.Visible = True
Else: ComboBox18.Visible = False
End If
If PAIS = "VENEZUELA" Then
ComboBox19.Visible = True
Else: ComboBox19.Visible = False
End If
If PAIS = "CANADA" Then
ComboBox20.Visible = True
Else: ComboBox20.Visible = False
End If
If PAIS = "ALBANIA" Then
ComboBox22.Visible = True
Else: ComboBox22.Visible = False
End If
If PAIS = "ANDORRA" Then
ComboBox23.Visible = True
Else: ComboBox23.Visible = False
End If
If PAIS = "ANTIGUA Y BARBUDA" Then
ComboBox24.Visible = True
Else: ComboBox24.Visible = False
End If
If PAIS = "ANTILLAS HOLANDESAS" Then
ComboBox25.Visible = True
Else: ComboBox25.Visible = False
End If
If PAIS = "AZERBAIYAN" Then
ComboBox26.Visible = True
Else: ComboBox26.Visible = False
End If
If PAIS = "BIELORRUSIA" Then
ComboBox28.Visible = True
Else: ComboBox28.Visible = False
End If
If PAIS = "BELICE" Then
ComboBox29.Visible = True
Else: ComboBox29.Visible = False
End If
If PAIS = "BOLIVIA" Then
ComboBox30.Visible = True
Else: ComboBox30.Visible = False
End If
If PAIS = "BOSNIA-HERZEGOVINA" Then
ComboBox31.Visible = True
Else: ComboBox31.Visible = False
End If
If PAIS = "BULGARIA" Then
ComboBox32.Visible = True
Else: ComboBox32.Visible = False
End If
If PAIS = "CANADA" Then
ComboBox33.Visible = True
Else: ComboBox33.Visible = False
End If
If PAIS = "COSTA RICA" Then
ComboBox36.Visible = True
Else: ComboBox36.Visible = False
End If
If PAIS = "CROACIA" Then
ComboBox37.Visible = True
Else: ComboBox37.Visible = False
End If
If PAIS = "DOMINICA" Then
ComboBox38.Visible = True
Else: ComboBox38.Visible = False
End If
If PAIS = "EMIRATOS ARABES UNIDOS" Then
ComboBox41.Visible = True
Else: ComboBox41.Visible = False
End If
If PAIS = "ESLOVAQUIA" Then
ComboBox42.Visible = True
Else: ComboBox42.Visible = False
End If
If PAIS = "ESLOVENIA" Then
ComboBox43.Visible = True
Else: ComboBox43.Visible = False
End If
If PAIS = "GEORGIA" Then
ComboBox44.Visible = True
Else: ComboBox44.Visible = False
End If
If PAIS = "GRANADA" Then
ComboBox45.Visible = True
Else: ComboBox45.Visible = False
End If
If PAIS = "GUADALUPE" Then
ComboBox46.Visible = True
Else: ComboBox46.Visible = False
End If
If PAIS = "GUYANA FRANCESA" Then
ComboBox48.Visible = True
Else: ComboBox48.Visible = False
End If
If PAIS = "IRLANDA" Then
ComboBox50.Visible = True
Else: ComboBox50.Visible = False
End If
If PAIS = "ISLAS CAYMAN" Then
ComboBox51.Visible = True
Else: ComboBox51.Visible = False
End If
If PAIS = "ISLAS VIRGENES AMERICANAS" Then
ComboBox52.Visible = True
Else: ComboBox52.Visible = False
End If
If PAIS = "ISLAS VIRGENES BRITANICAS" Then
ComboBox53.Visible = True
Else: ComboBox53.Visible = False
End If
If PAIS = "KAZAKHSTAN" Then
ComboBox55.Visible = True
Else: ComboBox55.Visible = False
End If
If PAIS = "KUWAIT" Then
ComboBox56.Visible = True
Else: ComboBox56.Visible = False
End If
If PAIS = "MACEDONIA" Then
ComboBox57.Visible = True
Else: ComboBox57.Visible = False
End If
If PAIS = "MALTA" Then
ComboBox58.Visible = True
Else: ComboBox58.Visible = False
End If
If PAIS = "MARTINICA" Then
ComboBox59.Visible = True
Else: ComboBox59.Visible = False
End If
If PAIS = "MOLDAVIA" Then
ComboBox60.Visible = True
Else: ComboBox60.Visible = False
End If
If PAIS = "MONTENEGRO" Then
ComboBox61.Visible = True
Else: ComboBox61.Visible = False
End If
If PAIS = "NUEVA ZELANDA" Then
ComboBox62.Visible = True
Else: ComboBox62.Visible = False
End If
If PAIS = "NICARAGUA" Then
ComboBox63.Visible = True
Else: ComboBox63.Visible = False
End If

If PAIS = "OMAN" Then
ComboBox64.Visible = True

Else: ComboBox64.Visible = False
End If

If PAIS = "PALESTINA" Then
ComboBox65.Visible = True

Else: ComboBox65.Visible = False
End If

If PAIS = "PARAGUAY" Then
ComboBox67.Visible = True

Else: ComboBox67.Visible = False
End If

If PAIS = "QATAR" Then
ComboBox69.Visible = True

Else: ComboBox69.Visible = False
End If

If PAIS = "RUMANIA" Then
ComboBox71.Visible = True

Else: ComboBox71.Visible = False
End If

If PAIS = "RUSIA" Then
ComboBox72.Visible = True

Else: ComboBox72.Visible = False
End If

If PAIS = "SANTA LUCIA" Then
ComboBox73.Visible = True

Else: ComboBox73.Visible = False
End If

If PAIS = "SAN VINCENTS" Then
ComboBox74.Visible = True

Else: ComboBox74.Visible = False
End If

If PAIS = "SERBIA" Then
ComboBox75.Visible = True

Else: ComboBox75.Visible = False
End If

If PAIS = "SURINAN" Then
ComboBox76.Visible = True

Else: ComboBox76.Visible = False
End If

If PAIS = "TAIWAN" Then
ComboBox77.Visible = True

Else: ComboBox77.Visible = False
End If

If PAIS = "TANZANIA" Then
ComboBox78.Visible = True

Else: ComboBox78.Visible = False
End If

If PAIS = "UCRANIA" Then
ComboBox80.Visible = True

Else: ComboBox80.Visible = False
End If

If PAIS = "URUGUAY" Then
ComboBox81.Visible = True
Else: ComboBox81.Visible = False
End If

PAIS = Range("R3").Value
If PAIS = "UZBEKISTAN" Then
ComboBox82.Visible = True
Else: ComboBox82.Visible = False
End If


End Sub
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
Imágen de perfil de JuanC

RE:LENTITUD EN RUTINA

Publicado por JuanC (565 intervenciones) el 14/06/2009 13:26:32
te sugiero que uses una estructura Select Case en lugar de tantos If ... Else ... End If
o la función Switch

también deberías evitar poner todo el código en el evento Calculate
quizá eso sea el problema de la velocidad, poniendo el modo de cálculo en
manual seguro que va a mejorar...

Application.Calculation = xlCalculationManual

y luego Application.Calculation = xlCalculationAutomatic

Saludos, desde Baires, JuanC
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