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
Ir a la versión completa