2 maneras de sumar números de un ListBox en Excel [VBA]
En este video tutorial te voy a mostrar dos maneras en las que puede sumar todos los elementos que haya un Control ActiveX ListBox, para que lo apliques en tus desarrollos con macros en Excel.
Ver Video Sumar números en ListBox
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Cómo lo hacemos
Tenemos un Formulario en Excel VBA que contiene controles ActiveX, los cuales enlisto a continuación:
-
Un Cuadro de texto o TextBox.
-
Dos Botones CommandButtons.
-
Un Cuadro de lista o ListBox.
-
Dos Etiquetas o Labels.
Figura 1. Formulario para sumar elementos de un ListBox en Excel con VBA.
Cómo funciona el Formulario
Al ingresar un valor numérico en cuadro de texto y al presionar el botón Agregar, el valor se añadirá al ListBox y se irán acumulando los valores en la etiqueta SUMA. La primera vez que se presione el botón Agregar el valor se añadirá a la etiqueta; en la segunda vuelta, el valor de añadirá al ListBox y se sumará al valor de la etiqueta.
Figura 2. Sumar valores en ListBox de Excel VBA.
Código VBA de la macro
Ahora te regalo el código VBA usado en el Formulario.
Option Explicit 'EXCELeINFO 'MVP Sergio Alejandro Campos 'http://www.exceleinfo.com 'https://www.youtube.com/user/sergioacamposh Private Sub CommandButton1_Click() Dim Valor As Integer Valor = Me.txtNumero.Value Me.ListBox1.AddItem Valor Me.txtNumero.Value = "" Me.lblTotal = VBA.Format(Me.lblTotal.Caption + Valor, "Currency") Me.txtNumero.SetFocus End Sub Private Sub CommandButton2_Click() Dim i As Integer Dim Valor As Integer Dim Suma As Long For i = 0 To Me.ListBox1.ListCount - 1 Valor = Me.ListBox1.List(i) Suma = Suma + Valor Next i MsgBox Suma End Sub Private Sub txtNumero_Change() Dim Texto As Variant Dim Caracter As Variant Dim Largo As Integer Dim i As Integer Dim Caracter1 As String On Error Resume Next Texto = Me.txtNumero.Value Largo = Len(Me.txtNumero.Value) For i = 1 To Largo Caracter = Mid(Texto, i, 1) If Caracter <> "" Then If Caracter < Chr(48) Or Caracter > Chr(57) Then Me.txtNumero.Value = Replace(Texto, Caracter, "") Else End If End If Next i On Error GoTo 0 Caracter = 0 Caracter1 = 0 End Sub Private Sub UserForm_Initialize() Me.txtNumero.SetFocus Me.CommandButton1.Default = True End Sub
Descarga el archivo de ejemplo
Sumar números en ListBox – EXCELeINFO.zip
Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.