Un usuario, a partir de este post (ver), preguntaba la manera de acumular/sumar importes correspondientes a una selección de 'clientes':
El objetivo es obtener la suma de los importes de aquellos clientes que hubiéramos seleccionado previamente:
Nuestro procedimiento la creamos en la ventana de código de la hoja que contenga los controles ActiveX insertados.
Para probarlo bastará seleccionar en el ListBox de la hoja los clientes necesarios y presionar el botón 'Ejecutar'.
La respuesta será la esperada, un MsgBox que devuelve el listado de clientes marcados y el importe acumulado de dichos clientes.
[...]me gustaría saber como hacer lo mismo pero que me sume la cantidades seleccionadas; por ejemplo, si seleccionara el campo importe[...] |
El objetivo es obtener la suma de los importes de aquellos clientes que hubiéramos seleccionado previamente:
Nuestro procedimiento la creamos en la ventana de código de la hoja que contenga los controles ActiveX insertados.
Private Sub CommandButton1_Click() Dim seleccionados As Integer, lItem As Long Dim Suma As Double, stClientes As String Dim MisImportes() As Variant 'recorremos cada elemento del ListBox For i = 0 To ListBox1.ListCount - 1 'verificamos si está o no seleccionado 'en caso afirmativo, acumulamos el contador If ListBox1.Selected(i) = True Then seleccionados = seleccionados + 1 End If Next i 'comprobamos que hay algún elemento seleccionado If seleccionados = 0 Then MsgBox "Debes marcar al menos un cliente" Exit Sub End If 'redimensionamos nuestra Matriz (Array) al tamaño necesario... 'tantas filas como clientes marcados y dos columnas ReDim MisImportes(1 To seleccionados, 1 To 2) As Variant x = 0 'recorremos todos los elementos del Listbox For lItem = 0 To ListBox1.ListCount - 1 'en caso de que el elemento esté seleccionado 'lo añadimos a una matriz If ListBox1.Selected(lItem) = True Then x = x + 1 'para idetificar listad de clientes MisImportes(x, 1) = ListBox1.List(lItem, 0) stClientes = stClientes & " " & MisImportes(x, 1) 'para acumlar los importes MisImportes(x, 2) = ListBox1.List(lItem, 1) Suma = Suma + CDbl(MisImportes(x, 2)) 'dejamos el Listbox sin selección ListBox1.Selected(lItem) = False End If Next lItem 'mostramos el resultado final... MsgBox "Número de clientes seleccionados: " & seleccionados & vbCrLf & _ "que son: " & stClientes & vbCrLf & _ "Suma de importes:= " & Suma End Sub
Para probarlo bastará seleccionar en el ListBox de la hoja los clientes necesarios y presionar el botón 'Ejecutar'.
La respuesta será la esperada, un MsgBox que devuelve el listado de clientes marcados y el importe acumulado de dichos clientes.
me gustaria saber como cambio de fila la suma porque tengo un lista pero el valor no esta en la fila 2 y fila 7 me puedes ayudar que cambiaria ahy grasias mi correo es sistemadegestiontd@hotmail.com grasias
ResponderEliminarPerdona,
Eliminarno comprendo la cuestión que planteas..¿¿??