Hoy trabajaremos con los TextBox de un UserForm para dar una posible solución a un lector que preguntaba:
El objetivo es obtener la suma acumulada de todos esos 90 textbox sin tener que sumar uno por uno...
En el ejemplo me plantaré en la suma de 9 textbox:
Para ello en el editor de VB insertaremos un UserForm y dentro de él los siguientes controles:
- 9 TextBox con nombres TxtCal1,TxtCal2,TxtCal3...TxtCal9
- 1 TextBox con nombre txtResultado
- 1 CommandButton cmdSalir
- 1 CommandButton cmdCalculo
- 1 label
Es muy importante el patrón a la hora de dar nombre a los controles!!.
Para conseguir nuestro objetivo insertamos los siguientes evento en la ventana de código del UserForm:
Y listo... como podemos comprobar en la primera imagen del post, la suma se obtiene de manera correcta.
OJO!!, recuerda escribir los números decimales con tu separador decimal... en mi caso la coma!
| [...] Quiero sumar varios Textbox. Son como 90. y todos empiezan con: Peso2 y un número que va del 1 al 90. Cómo puedo hacer para que me los sume automáticamente y los ponga en otro textbox?[...] |
El objetivo es obtener la suma acumulada de todos esos 90 textbox sin tener que sumar uno por uno...
En el ejemplo me plantaré en la suma de 9 textbox:
Para ello en el editor de VB insertaremos un UserForm y dentro de él los siguientes controles:
- 9 TextBox con nombres TxtCal1,TxtCal2,TxtCal3...TxtCal9
- 1 TextBox con nombre txtResultado
- 1 CommandButton cmdSalir
- 1 CommandButton cmdCalculo
- 1 label
Es muy importante el patrón a la hora de dar nombre a los controles!!.
Para conseguir nuestro objetivo insertamos los siguientes evento en la ventana de código del UserForm:
Private Sub cmdCalculo_Click()
Dim ctrl As Control 'crea un objeto tipo Control
suma = 0
'recorre cada control dentro del formulario
For Each ctrl In Me.Controls
'comprueba si es un TextBox
If TypeName(ctrl) = "TextBox" Then
'y que el TextBox se llama "TxtCal..." y tiene dato
If InStr(1, ctrl.Name, "TxtCal") > 0 And ctrl.Text <> "" Then
'en ese caso acumulamos el valor del TextBox
suma = suma + CDbl(Controls(ctrl.Name).Value)
End If
End If
Next ctrl
'y acabamos llevando el acumulado al último textbox
Me.txtResultado.Value = suma
End Sub
Private Sub cmdSalir_Click()
'salimos del UserForm
Unload Me
End SubY listo... como podemos comprobar en la primera imagen del post, la suma se obtiene de manera correcta.
OJO!!, recuerda escribir los números decimales con tu separador decimal... en mi caso la coma!




No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.