Columna Listbox
De nuevo apelo a tu experiencia para intentar solucionar un problema que me lleva de cabeza.
Tengo un Userform para controlar facturas con cuatro botones (No vencidas/Vencidas/Pagadas/Todas) en un solo listbox, además de un textbox donde me devuelve la suma de una columna de "importes" del listbox según el botón seleccionado. Los datos se toman de una tabla en una hoja del mismo libro.
El problema es el siguiente, aunque la columna "importes" de la tabla está formateada a moneda con dos decimales (Euro), la columna de importes del listbox por defecto me devuelve los valores sin formatear, algunos sin decimales, otros con uno, otros con dos. A su vez la suma que traslada al textbox no es correcta, me imagino que debido a la falta de decimales de la columna del listbox.
He probado de darle formato a la columna del listbox y me lo pone correctamente, pero la suma que devuelve al textbox es aún más incoherente.
Te copio el código de uno de los botones ya que todos son iguales evidentemente cambiando los datos de visualización de columnas. Al final te copio también el código del textbox (muy simple, solo para el formato moneda).
Private Sub CommandButton1_Click()
'
On Error Resume Next
Application.ScreenUpdating = False
Sheets("Todas Fras.").Visible = True
ListBox1.Clear
Sheets("Todas Fras.").Select
Range("F1").Select
ListBox1.ColumnCount = 6
ListBox1.TextAlign = fmTextAlignCenter
'
For T = 1 To 3500
If ActiveCell = "NO PAGADA" Then
ListBox1. AddItem ActiveCell
ListBox1. List(ListBox1.ListCount -1,1) = ActiveCell.Offset(0,-5)
<span class="Apple-tab-span" style="white-space: pre;"> ListBox1.List(ListBox1.ListCount -1,</span>2<span class="Apple-tab-span" style="white-space: pre;">) = ActiveCell.Offset(0,-</span>4<span class="Apple-tab-span" style="white-space: pre;">)</span>
ListBox1. List(ListBox1.ListCount -1,3) = ActiveCell.Offset(0,-3)
ListBox1. List(ListBox1.ListCount -1,4) = ActiveCell.Offset(0,-2)
ListBox1. List(ListBox1.ListCount -1,5) = ActiveCell.Offset(0,5)
Listbox1.List(ListBox1.ListCount -1,4) = Format(ListBox1.List(ListBox1.ListCount -1,4), "#,##0.00€")
End If
ActiveCell.Offset(1,0).Select
Next
For i = 0 To ListBox1.ListCount -1
tot = tot + Val(ListBox1.List(i,4)
Next i
TextBox1 = tot
Sheets("Todas Fras.").Visible = False
End Sub
Private Sub TextBox1_Change()
TextBox1.Value = Format(TextBox1, "#,##0.00€")
End Sub
A la espera que puedas ayudarme,
Tengo un Userform para controlar facturas con cuatro botones (No vencidas/Vencidas/Pagadas/Todas) en un solo listbox, además de un textbox donde me devuelve la suma de una columna de "importes" del listbox según el botón seleccionado. Los datos se toman de una tabla en una hoja del mismo libro.
El problema es el siguiente, aunque la columna "importes" de la tabla está formateada a moneda con dos decimales (Euro), la columna de importes del listbox por defecto me devuelve los valores sin formatear, algunos sin decimales, otros con uno, otros con dos. A su vez la suma que traslada al textbox no es correcta, me imagino que debido a la falta de decimales de la columna del listbox.
He probado de darle formato a la columna del listbox y me lo pone correctamente, pero la suma que devuelve al textbox es aún más incoherente.
Te copio el código de uno de los botones ya que todos son iguales evidentemente cambiando los datos de visualización de columnas. Al final te copio también el código del textbox (muy simple, solo para el formato moneda).
Private Sub CommandButton1_Click()
'
On Error Resume Next
Application.ScreenUpdating = False
Sheets("Todas Fras.").Visible = True
ListBox1.Clear
Sheets("Todas Fras.").Select
Range("F1").Select
ListBox1.ColumnCount = 6
ListBox1.TextAlign = fmTextAlignCenter
'
For T = 1 To 3500
If ActiveCell = "NO PAGADA" Then
ListBox1. AddItem ActiveCell
ListBox1. List(ListBox1.ListCount -1,1) = ActiveCell.Offset(0,-5)
<span class="Apple-tab-span" style="white-space: pre;"> ListBox1.List(ListBox1.ListCount -1,</span>2<span class="Apple-tab-span" style="white-space: pre;">) = ActiveCell.Offset(0,-</span>4<span class="Apple-tab-span" style="white-space: pre;">)</span>
ListBox1. List(ListBox1.ListCount -1,3) = ActiveCell.Offset(0,-3)
ListBox1. List(ListBox1.ListCount -1,4) = ActiveCell.Offset(0,-2)
ListBox1. List(ListBox1.ListCount -1,5) = ActiveCell.Offset(0,5)
Listbox1.List(ListBox1.ListCount -1,4) = Format(ListBox1.List(ListBox1.ListCount -1,4), "#,##0.00€")
End If
ActiveCell.Offset(1,0).Select
Next
For i = 0 To ListBox1.ListCount -1
tot = tot + Val(ListBox1.List(i,4)
Next i
TextBox1 = tot
Sheets("Todas Fras.").Visible = False
End Sub
Private Sub TextBox1_Change()
TextBox1.Value = Format(TextBox1, "#,##0.00€")
End Sub
A la espera que puedas ayudarme,
1 respuesta
Respuesta de prozac
1