Programación General > Visual Basic 6.0 e inferiores

 Select Case!!!

(1/1)

ghr:
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 --- Private Sub Form_Load()    Combo1.Visible = False    For k = 1 To 81       Combo2.AddItem Choose(k, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, _        66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, _       85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, _       103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, _       118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, _       133, 134, 135)    NextEnd Sub  
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 ---Private Sub Combo2_Click()    Combo1.Visible = True     Select Case Combo2.Text        Case 55            For cm = 1 To 34                Combo1.AddItem Choose(cm, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, _                66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, _                83, 84, 85, 86, 87, 88, 89)            Next        Case 56            For cm = 1 To 34                Combo1.AddItem Choose(cm, 60, 61, 62, 63, 64, 65, _                66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, _                83, 84, 85, 86, 87, 88, 89, 90, 91, 93, 94)            Next        Case 57         .          .           .        ' Case 126        '  .        '  .    End SelectEnd Sub 

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

albertovicat:
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:
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:
Hola!!!

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


--- Código: Text --- Private Sub Combo2_Click()   Combo1.Visible = True   Combo1.Clear    For cm = Combo2.Text + 1 To Combo2.Text + 34        Combo1.AddItem cm    NextEnd Sub Private Sub Form_Load()   Combo1.Visible = False   For k = 55 To 135      Combo2.AddItem k   NextEnd Sub  
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:

ghr:
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 ---Private Sub Form_Load()    Combo1.Visible = False        For k = 55 To 135            Combo2.AddItem k        NextEnd Sub  

--- Código: Text ---Private Sub Combo2_Click()    Combo1.Visible = True     Select Case Combo2.Text        Case 55            For cm = 56 To 89                Combo1.AddItem cm            Next        Case 56            For cm = 56 To 89                Combo1.AddItem cm            Next        Case 104            For cm = 59 To 125                Combo1.AddItem cm            Next        Case 105            For cm = 59 To 127                Combo1.AddItem cm            Next        Case 106            For cm = 59 To 127                Combo1.AddItem cm            Next        Case 126            For cm = 62 To 127                Combo1.AddItem cm            Next        Case 127            For cm = 62 To 127                Combo1.AddItem cm            Next        Case 128            For cm = 62 To 127                Combo1.AddItem cm            Next      .      .      .     End SelectEnd Sub  
todo sale tal y como necesito, gracias...   :)

 :comp:

Navegación

[0] Índice de Mensajes

Ir a la versión completa