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 SubPara 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..¿¿??