Actualizar un valor asignado por codigo a una celda de un ListBox

Estimados Amigos
Xojo

Nuevamente recurriendo a su gran Ayuda para resolver la siguiente situacin presentada:

Tengo un Listbox formado por 3 filas y 3 columnas donde sus celdas son Editables.
Ingreso valores en la primera celda digamos lo siguiente: 45.43217 en la segunda celda 23.50 en la tercera celda 22.2678
en la parte inferior del listbox tengo 3 textfield, el primer textfield contiene la sumatoria de todas las
celdas de la primera columna del listbox, el segundo textfield contiene la sumatoria de todas las celdas de la segunda columna
y el tercer textfield contiene la sumatoria de todas las celdas de la tercera columna.

Bueno los valores ingresados los valido mediante codigo para que estos sean numeros y redondeados a tanto decimales
por ejemplo si digito en una celda 45.43217 y luego ejecuto un metodo llamado redondear, este me devuelve un numero redondeado a 2 decimales y
nuevo valor devuelto por el metodo es 45.43, pero sin embargo cuando le asigno el valor devuelto redondeado NO se
actualiza inmediatamente el valor en la Celda
y la sumatoria me lo realiza con el VALOR que ingrese INICIALMENTE (45.43217), es decir no se refleja la asignacin que lo hago mediante cdigo

En el evento CellLostFocus del Listo


Dim tmp As String = me.Cell(row, column)
Dim nuevovalor As Double = app.Redondear(CDbl(tmp),2)

Me.cell(row,column)=str(nuevovalor) 'Asigno el NUEVO VALOR redondeado MEDIANTE CODIGO a la celda

MsgBox " El valor actual que contiene la celda" +Me.cell(row,column) 'Me muestra lo que digite inicialmente 45.43217 y NO el NUEVO VALOR 45.43

Me.sumatoria() 'La sumatoria lo hace con el valor digitado inicialmente

El cambio se refleja cuando cambio de fila, pero la condicin que se presenta es que se actualice inmediatamente al asignar mediante cdigo alguna modificacin

Tambin si ingreso incorrectamente en una celda, por decir lo siguiente: 43&5.0/

por mas que lo valido la celda mantiene el valor incorrecto ingresado inicialmente a pesar que le asigno un valor “0.00” a la celda mediante cdigo no se refleja inmediatamente el cambio

Sus respuestas sern muy apreciadas

Cordialmente,

RAUL

Por favor, cuando postar cdigo, haga clic en la por encima del editor

[code]Dim tmp As String = me.Cell (row, column)
Dim newvalue As Double = app.Redondear (CDbl (tmp), 2)

Me.cell (row, column) = str (newvalue) 'I assign rounded NEW VALUE BY CODE to the cell

MsgBox “The current value containing the cell” + Me.cell (row, column) 'shows me what I initially enter 45.43217 and NOT the NEW VALUE 45.43

Me.sumatoria () 'The summation does with the value initially typed[/code]

es mucho, mucho ms legible.

Proba InvalidateCell.

Lo sentimos, google translate espaol :frowning:

Vea ListBox.CellTag

Sub CellLostFocus(row as Integer, column as Integer) Handles CellLostFocus me.celltag(row, column) = me.cell(row, column) 'valor original oculto me.cell(row, column) = format(val(me.cell(row, column)), "0.00") 'valor formateado End Sub

Al calcular el acceso total a la columna CellTag no Cell, la respuesta ser exacta.

=English=

Sorry, google translate spanish :frowning:

See ListBox.CellTag

Sub CellLostFocus(row as Integer, column as Integer) Handles CellLostFocus me.celltag(row, column) = me.cell(row, column) ' hidden original value me.cell(row, column) = format(val(me.cell(row, column)), "0.00") ' formatted value End Sub

When calculating column total access CellTag not Cell, answer will be accurate.

Estimado JulianS

Gracias por tu respuesta, Con el CellTag pude resolver la situacin planteada, como siempre tu respuesta muy oportuna

Bendiciones y un abrazo

Raul Juarez Pulache