• Viernes 19 de Abril de 2024, 21:37

Autor Tema:  Select Case!!!  (Leído 1686 veces)

ghr

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Select Case!!!
« en: Domingo 11 de Febrero de 2007, 03:43 »
0
hola amigos, vengo aki para si alguien me puede ayudar en una duda que tengo. bueno lo ke pasa es ke tengo un procedimiento en el que tengo  lo siguiente:

con este codigo empiezo a agregar al combo los valores que aqui se muestran
Código: Text
  1.  
  2. Private Sub Form_Load()
  3.     Combo1.Visible = False
  4.     For k = 1 To 81
  5.        Combo2.AddItem Choose(k, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, _
  6.        66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, _
  7.        85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, _
  8.        103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, _
  9.        118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, _
  10.        133, 134, 135)
  11.     Next
  12. End Sub
  13.  
  14.  

luego se abre otro combo en el que se agregan otros datos en ese combo que se abre dependiendo del CASE toma unos valores diferentes al otro, todo va bien hasta el CASE 126 ahi me muestra Procedimiento demasiado largo, del 126 en adelante los tengo comentados porque si no me marca este error aunque escogiera el 55, si alguien me puede ayudar en esta duda.

Código: Text
  1. Private Sub Combo2_Click()
  2.     Combo1.Visible = True
  3.      Select Case Combo2.Text
  4.         Case 55
  5.             For cm = 1 To 34
  6.                 Combo1.AddItem Choose(cm, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, _
  7.                 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, _
  8.                 83, 84, 85, 86, 87, 88, 89)
  9.             Next
  10.         Case 56
  11.             For cm = 1 To 34
  12.                 Combo1.AddItem Choose(cm, 60, 61, 62, 63, 64, 65, _
  13.                 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, _
  14.                 83, 84, 85, 86, 87, 88, 89, 90, 91, 93, 94)
  15.             Next
  16.         Case 57
  17.          .
  18.           .
  19.            .
  20.         ' Case 126
  21.         '  .
  22.         '  .
  23.     End Select
  24. End Sub
  25.  


espero y me puedan ayudar para resolver este problema
 :unsure:

albertovicat

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Select Case!!!
« Respuesta #1 en: Domingo 11 de Febrero de 2007, 14:08 »
0
Se me ocurren dos posibles formas.
Una sería hacer varios Salect Case/End Select consecutivos, poniendo el primero desde Case 55 hasta Case 125, en el segundo Case 126 hasta (aparentemente te acepta 71) Case 197, y así, no se cuantos son los posibles valores de Case.

Otra: pero ojo porque te está diciendo "Procedimiento demasiado largo", y con ello se estaría refiriendo a la sub Click y no al Select Case. Así que si fraccionando como te digo antes tampoco quiere funcionar, entonces habría que separar a cada Select Case/End Select en una sub diferente, y que la Click al final llame a la siguiente, esta a la tercera y así.
A ver si te funciona.

albertovicat

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Select Case!!!
« Respuesta #2 en: Domingo 11 de Febrero de 2007, 14:11 »
0
Se me ocurren dos posibles formas.
Una sería hacer varios Salect Case/End Select consecutivos, poniendo el primero desde Case 55 hasta Case 125, en el segundo Case 126 hasta (aparentemente te acepta 71) Case 197, y así, no se cuantos son los posibles valores de Case.

Otra: pero ojo porque te está diciendo "Procedimiento demasiado largo", y con ello se estaría refiriendo a la sub Click y no al Select Case. Así que si fraccionando como te digo antes tampoco quiere funcionar, entonces habría que separar a cada Select Case/End Select en una sub diferente, y que la Click al final llame a la siguiente, esta a la tercera y así.
A ver si te funciona.

PD: tengo problemas con mi proveedor de Internet, cuando hice clic en Responder tradaba una eternidad, recargué la página y lo mandó dos veces.  <_<

aicrag

  • Miembro activo
  • **
  • Mensajes: 26
    • Ver Perfil
Re: Select Case!!!
« Respuesta #3 en: Domingo 11 de Febrero de 2007, 17:57 »
0
Hola!!!

Veamos, porqué no hacés algo como esto:

Código: Text
  1.  
  2. Private Sub Combo2_Click()
  3.    Combo1.Visible = True
  4.    Combo1.Clear
  5.     For cm = Combo2.Text + 1 To Combo2.Text + 34
  6.         Combo1.AddItem cm
  7.     Next
  8. End Sub
  9.  
  10. Private Sub Form_Load()
  11.    Combo1.Visible = False
  12.    For k = 55 To 135
  13.       Combo2.AddItem k
  14.    Next
  15. End Sub
  16.  
  17.  

porque según como veo al menos en el caso en el que el combo2 toma 55 agregás desde 56, 34 valores mas en orden, nosé en los otros casos cual sería el criterio para llenar el combo1, pero podés hacerte una formula para rellenar el combo1 o algo así, y reducirias la cantidad de código.....   :kicking:
El sabio no es aquel que sabe donde esta el tesoro, sino el que trabaja y lo saca

ghr

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Select Case!!!
« Respuesta #4 en: Domingo 11 de Febrero de 2007, 20:25 »
0
ya probe las recomendaciones que me hicieron y las dos resultaron buenas, aunque como la intención siempre es de optimizar las lineas de codigo que manejamos deje el codigo como sigue

Código: Text
  1. Private Sub Form_Load()
  2.     Combo1.Visible = False
  3.         For k = 55 To 135
  4.             Combo2.AddItem k
  5.         Next
  6. End Sub
  7.  
  8.  

Código: Text
  1. Private Sub Combo2_Click()
  2.     Combo1.Visible = True
  3.      Select Case Combo2.Text
  4.         Case 55
  5.             For cm = 56 To 89
  6.                 Combo1.AddItem cm
  7.             Next
  8.         Case 56
  9.             For cm = 56 To 89
  10.                 Combo1.AddItem cm
  11.             Next
  12.         Case 104
  13.             For cm = 59 To 125
  14.                 Combo1.AddItem cm
  15.             Next
  16.         Case 105
  17.             For cm = 59 To 127
  18.                 Combo1.AddItem cm
  19.             Next
  20.         Case 106
  21.             For cm = 59 To 127
  22.                 Combo1.AddItem cm
  23.             Next
  24.         Case 126
  25.             For cm = 62 To 127
  26.                 Combo1.AddItem cm
  27.             Next
  28.         Case 127
  29.             For cm = 62 To 127
  30.                 Combo1.AddItem cm
  31.             Next
  32.         Case 128
  33.             For cm = 62 To 127
  34.                 Combo1.AddItem cm
  35.             Next
  36.       .
  37.       .
  38.       .
  39.      End Select
  40. End Sub
  41.  
  42.  

todo sale tal y como necesito, gracias...   :)

 :comp: