[AYUDA EXCEL] Optimizar codigo vb

19/11/2003 - 11:47 por Nilo | Informe spam
Hola,

Tengo un par de problemas en Excel, que seguro tienen una solución muy
sencilla... Pero "el que no sabe es como el que no ve" :( y este es mi
caso...

1.- Tengo un formulario de Excel que tiene un monton de TextBox (120)
pero en realidad solo 6 son diferentes, los demás repiten las mismas
instrucciones para cada TextBox en particular.

Pongo un ejemplo (en mi caso los TextBox estan renombrados como TOTx):

Private Sub TOT1_Change()

End Sub


Lo que quiero es escribir este argumento una sola vez y no 20 veces
(para TOT1,TOT2...TOT20)

¿Como puedo hacer para que el numero que identifica a mi textbox TOT sea
una variable del 1 al 20 valida en todo el formulario?


2.- Como puedo hacer referencia a un rango de TextBox. Es decir si
quiero sumar sobre un textbox TOTTOTAL los textbox TOT1 a TOT20???

Supongo que no tendre que mencionarlos uno a uno ¿no?...(
TOTTOTAL.BoundValue = Format((CDec(TOT1) + CDec(TOT2) + CDec(TOT3) +
CDec(TOT4) + CDec(TOT5) + CDec(TOT6) + CDec(TOT7) + CDec(TOT8) + CDec
(TOT9) + CDec(TOT10) + CDec(TOT11) + CDec(TOT12) + CDec(TOT13) + CDec
(TOT14) + CDec(TOT15) + CDec(TOT16) + CDec(TOT17) + CDec(TOT18) + CDec
(TOT19) + CDec(TOT20)), "#,##0.00;[Red]-#,##0.00")

3.- Y la ultima cosa, al confirmar mi formulario se tienen que llenar
unos rangos con el contenido de mis textbox... Algo así como...

For lineas = 1 To 20
Range("Importe_Ud" & lineas).Select
ActiveCell.Value = CDec(TOT & lineas)
Next lineas

Los rangos los encuentra sin problema pero no logro que interprete "TOT
& lineas" como mi textbox... Tal como esta me pone 1, 2, ...



En fin, ya veis que son lagunas de principiante y agradezco de antemano
cualquier sugerencia que me podais hacer.

Un saludo,
Nilo
 

Leer las respuestas

#1 Fernando Arroyo
19/11/2003 - 17:54 | Informe spam
"Nilo" escribió en el mensaje news:
Hola,

Tengo un par de problemas en Excel, que seguro tienen una solución muy
sencilla... Pero "el que no sabe es como el que no ve" :( y este es mi
caso...




Je, sencilla. Bienvenido al apasionante mundo de los módulos de clase...

1.- Tengo un formulario de Excel que tiene un monton de TextBox (120)
pero en realidad solo 6 son diferentes, los demás repiten las mismas
instrucciones para cada TextBox en particular.

Pongo un ejemplo (en mi caso los TextBox estan renombrados como TOTx):

Private Sub TOT1_Change()

End Sub


Lo que quiero es escribir este argumento una sola vez y no 20 veces
(para TOT1,TOT2...TOT20)

¿Como puedo hacer para que el numero que identifica a mi textbox TOT sea
una variable del 1 al 20 valida en todo el formulario?





He subido un ejemplo a la red:

www.excelsp.com/ejemplos/ejemplo_modulo_clase_formulario.xls

Si te fijas en el código que hay en el módulo de clase, los cuatro cuadros de texto del formulario se controlan mediante un solo evento Change y un solo evento DblClick. Es posible usar algún evento más, pero algunos, como Enter o Exit, no funcionan (o al menos a mí no me funcionan)


2.- Como puedo hacer referencia a un rango de TextBox. Es decir si
quiero sumar sobre un textbox TOTTOTAL los textbox TOT1 a TOT20???

Supongo que no tendre que mencionarlos uno a uno ¿no?...(
TOTTOTAL.BoundValue = Format((CDec(TOT1) + CDec(TOT2) + CDec(TOT3) +
CDec(TOT4) + CDec(TOT5) + CDec(TOT6) + CDec(TOT7) + CDec(TOT8) + CDec
(TOT9) + CDec(TOT10) + CDec(TOT11) + CDec(TOT12) + CDec(TOT13) + CDec
(TOT14) + CDec(TOT15) + CDec(TOT16) + CDec(TOT17) + CDec(TOT18) + CDec
(TOT19) + CDec(TOT20)), "#,##0.00;[Red]-#,##0.00")




En el formulario que he puesto de ejemplo hay un botón para sumar los cuadros de texto usando un bucle For...Next.

3.- Y la ultima cosa, al confirmar mi formulario se tienen que llenar
unos rangos con el contenido de mis textbox... Algo así como...

For lineas = 1 To 20
Range("Importe_Ud" & lineas).Select
ActiveCell.Value = CDec(TOT & lineas)
Next lineas

Los rangos los encuentra sin problema pero no logro que interprete "TOT
& lineas" como mi textbox... Tal como esta me pone 1, 2, ...





Intenta:
ActiveCell.Value = CDec(Me(TOT & lineas))


En fin, ya veis que son lagunas de principiante y agradezco de antemano
cualquier sugerencia que me podais hacer.




¿De principiante? Pues nos podemos preparar para cuando lleguen las de experto :-))
Un saludo.


Fernando Arroyo
MS MVP - Excel

Un saludo,
Nilo

Preguntas similares