Error en el código al sumar una columna del listbox. ¿Que hago mal?

Intento sumar la columna 5 del listbox, pero el código me da error en la parte que tengo señalada. ¿Alguien qué me pueda ayudar con esto?

r = .Range("A1").CurrentRegion
      End If
      With ListBox1
        .List = r
        For x = 0 To .ListCount - 1
          If ListBox1.List(x, 5) <> "" Then
             t = t + .List(x, 5) '<Aquí me da error
          End If
        Next
         Label25.Caption = t
      End With
  End With

1 Respuesta

Respuesta
3

¿Qué dice el error?

¿La columna 5 del listbox, la tienes con formato?

¿En qué número va el contador 'x' cuando se detiene la macro?

¿Qué tienes en el registro .List(x, 5)?

Error 13 (No coinciden los tipos)

La columna no tiene formato

La macro se detiene cuando encuentre celda vacía

y en las columnas 4 y 5 del list tengo valores.

Lo que intento es que haciendo clic en un botón me cargue todo el rango con datos de la hoja ("A:F") esto lo hago con esta línea: 

r = .Range("A1").CurrentRegion. Hasta ahí todo bien, pero después necesito que le ponga formato con decimales a las columnas 4 y 5 y sume la 5. 

No entiendo a qué te refieres con "pero después necesito que le ponga formato con decimales a las columnas 4 y 5 y sume la 5. "


Cambia esta línea:

t = t + .List(x, 5) 

Por esta:

t = t + value(. List(x, 5))

Si continúa el problema, entonces comparte tu archivo en google drive, o envíame tu archivo a mi correo:

[email protected]

Para revisar los datos.

Hola Dante Amor. 

Te paso captura y el código completo a ver si así me entiendes mejor.

Como ves en la imagen, cuando hago clic en el botón se carga el listbox con los datos de la hoja, y en el label me suma el total de la columna 5 del listbox. Hasta ahí todo bien, pero me gustaría que cuando se cargue el listbox, lo haga con decimales en las columnas 4 y 5.

Private Sub CommandButton1_Click()
 Dim t As Double
 Dim x As Long
 ListBox1.Clear
 With ActiveSheet
    r = .Range("A2").CurrentRegion
    With ListBox1
        .List = r
        For x = 0 To .ListCount - 1
          If .List(x) <> "" Then
             '.List(x, 4) = Format(x, "#,##0.00")
             t = t + Val(.List(x, 5))
          End If
        Next
         Label1.Caption = Format(t, "#,##0.00")
    End With
 End With
End Sub

Te paso el código actualizado:

Private Sub CommandButton1_Click()
  Dim t As Double
  Dim x As Long
  Dim r As Variant
  '
  ListBox1.Clear
  r = ActiveSheet.Range("A2").CurrentRegion
  With ListBox1
    .List = r
    For x = 1 To .ListCount - 1
      If .List(x) <> "" Then
        t = t + .List(x, 5)
        .List(x, 4) = Format(.List(x, 4), "#,##0.00")
        .List(x, 5) = Format(.List(x, 5), "#,##0.00")
      End If
    Next
  End With
  Label1.Caption = Format(t, "#,##0.00")
End Sub

[Avísame cualquier duda en el código  

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas