Excel Listbox sumar con decimales

Estoy queriendo sumar con decimales una columna especifica, así que aplique Cdbl pero me dice "Error 13", y si pongo VAL me realiza la suma pero no me suma los decimales. Esto estoy utilizando:

For i = 0 To ListBox19.ListCount - 1 
tot = totales + CDbl(ListBox19.List(i, 13)) 
Next i
TextBox18.Text = totales

1 Respuesta

Respuesta
1

Es posible que el dato de la col 13 no sea un dato posible de convertir a valores numéricos (es decir que es un texto) o está vacío.

Por ejemplo que al utilizar un punto decimal lo toma como texto y no como separador de decimales.

Si se trata de registros donde puede quedar vacía la col 13 lo podés resolver con esto:

If ListBox19.List(i, 13) <> "" then tot = totales + CDbl(ListBox19.List(i, 13)) 

Sdos y comenta si el problema persiste.

Elsa, sigue persistiendo el error "13", y voy a explicarlo con imágenes (leí tu leyenda en nick):

El formato que tengo en la columna "N:N" es del tipo MONEDA

Para visualizar esta columna en el Userform lo hago con el siguiente código y ajusto las columnas del listbox19.

Luego llamo los datos (a sumarse) de la col13 del lisbox19 para mostrarlos en el Textbox18

El resultado es la suma de los valores pero sin los decimales. Si coloco el If me salta "Error 13".

Muchas gracias por leerme y por tu ayuda!

La respuesta sigue siendo:

If ListBox19.List(i, 13) <> "" then tot = tot + CDbl(ListBox19.List(i, 13)) 

En mi respuesta anterior la palabra 'tot' se había convertido a 'totales' de ahí el error ( problemas del corrector).

Y la variable tot debe ser declarada como Double.

Si el problema persiste podes enviarme tu hoja con el UF para revisar otros detalles que aquí no se aprecian. Los correos aparecen en la portada de mi sitio que dejo al pie.

Sdos.

Elsa

http://aplicaexcel.galeon.com/index.htm

Muchas gracias!! recién acabo de enviar el mail.

Seguramente estoy haciendo algo mal.

Saludos!

En el UF1, evento Initialize, al final tenés la suma del listbox. Pero te da error porque en la fila 0 tenés los títulos.

Opción 1: empezar a acumular a partir de fila 1

For i = 1 To ListBox19.ListCount - 1      'EMPEZAR EN 1 XQ EN 0 SE ENCUENTRAN LOS TITULOS
If ListBox19.List(i, 13) <> "" Then tot = tot + CDbl(ListBox19.List(i, 13))   'EM
Next i
TextBox18.Text = tot
End Sub

Opción 2: empezar desde 0  controlando que no sea texto, de este modo:

For i = 0 To ListBox19.ListCount - 1
If IsNumeric(ListBox19.List(i, 13)) Then tot = tot + CDbl(ListBox19.List(i, 13))   'EM
Next i
TextBox18.Text = tot
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas