Sumar hasta 4 checkbox y actualizar un Label

Estimados

Estoy convirtiendo unas planillas de excel para el trabajo, programando en VB, armando UserForm donde el usuario cargue datos de planillas de mediciones, y con ayuda de ustedes y de la web en general, he logrado avanzar bastante, pero estoy un poco atorado con un problema:

Utilizo Excel 2010, pero las maquinas que lo usarán, tienen a partir de la versión 2007 seguro.

He probado utilizar la opción de tag para asignarles los valores, y he probado con ciclos de If, y no pude resolverlo, paso a comentarlo un poco más en detalle y me dirán si falta algo más:

En este userform, en un frame particular, asigne 4 checkbox de 4 contrapesos que uso en una medición (puede darse cualquier combinación, 1, 2 o los 4 contrapesos), y en el tag de cada checkbox le asigne los valores como aparecen C1=6.37, C2=12.61, C3=25.25, C4=50.24.

Agregue un label (Nombrado como Label37), donde quiero que se vea solamente el dato de la suma de los checkbox seleccionados, pero que sea automático (si es que se puede) que si tildo 3 y después saco 1, o la combinación que sea, me vuelva a mostrar el resultado de la combinación que finalmente se marque.

Espero puedan ayudarme u orientarme, ya que quisiera hacer algo simple, para luego con algunas modificaciones ya lo podre trasladar a otras cosas más complejas quizás.

Muchas gracias por el aporte de cada uno de ustedes, porque siempre se aprende hasta de 1 renglón que escriban.

1 Respuesta

Respuesta
1

Te mando la solución. Debido a que quieres que sea automático al pulsar cualquiera de los checkbox tenemos que usar los 4 eventos click de cada checkbox. Quedaría así:

(En mi ejemplo los valores de C1, C2, C3 y C4 los tengo en la hoja1.

Private Sub CheckBox1_Click()
orden = 0
For Each pincho In Frame1.Controls
orden = orden + 1
If pincho.Value = True Then
suma = suma + Sheets("hoja1").Cells(orden, 3).Value
End If
Next
Label1.Caption = suma
End Sub
Private Sub CheckBox2_Click()
orden = 0
For Each pincho In Frame1.Controls
orden = orden + 1
If pincho.Value = True Then
suma = suma + Sheets("hoja1").Cells(orden, 3).Value
End If
Next
Label1.Caption = suma
End Sub
Private Sub CheckBox3_Click()
orden = 0
For Each pincho In Frame1.Controls
orden = orden + 1
If pincho.Value = True Then
suma = suma + Sheets("hoja1").Cells(orden, 3).Value
End If
Next
Label1.Caption = suma
End Sub
Private Sub CheckBox4_Click()
orden = 0
For Each pincho In Frame1.Controls
orden = orden + 1
If pincho.Value = True Then
suma = suma + Sheets("hoja1").Cells(orden, 3).Value
End If
Next
Label1.Caption = suma
End Sub

recuerda finalizar y puntuar

Estimado luismondelo!

Ante todo mil gracias por su respuesta, me aclaro muchas cosas e incluso pude ver cosas para aprovechar y rehacer otras que ya hice en mi estructura, pero tengo un inconveniente al ejecutar el código, porque en la linea "if pincho.value=true then" me genera un error en "pincho" y entiendo que es el evento para el checkbox cuando se tilda, pero a que puede deberse mi error? Si hago click sobre "pincho", me aparece como "pincho=operado"

Gracias y estoy a un paso de resolverlo.

Saludos y aguardo su comentario.

Pincho es una variable que utilizo para evaluar cada uno de los elementos que hay dentro del frame. Supongo que el error que te da es porque no está declarada. A mi me

Funciona bien

Gracias por toda su ayuda, lo resolveré al declarar esa función y lo completo de probar! pero desde ya me simplificó muchísimo terminar de comprender el manejo de algunas funciones! Hasta la próxima y ojalá pueda aportarles un granito de arena de mi parte!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas