Visual Basic - Suma

Life is soft - evento anual de software empresarial
 
Vista:

Suma

Publicado por Juan Pablo (46 intervenciones) el 09/08/2006 16:04:02
Tengo el siguiente problema:

Resulta que tengo una serie de valores en un flexgrid, por ejemplo poseo una tabla de tres columnas y seis filas.
Necesito sumar los valores que hay en las primeras cinco filas de cada columna y dejarla guardada en la sexta fila respectivamente.

El problema que tengo es que no me arroja ningún valor. He tratado hacer esto pasando los valores a una matriz anteponiendo las funciones Val() o CDbl(), pero en estos casos solamente me toma la parte entera del valor.

Otra cosa que intente como me recomendaron hacer en una pregunta que hice ayer, fue traspasar los valores desde el flexgrid a la matriz sin poner ninguna funcion, lo cual me resulta, pero cuando llega el momento de realizar la suma me sale el aviso "type mismatch", y no sé que hacer después.

Si existe alguna solución a esto, estarñia agradecido de saberla.

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Suma

Publicado por Matías Freire (421 intervenciones) el 10/08/2006 01:21:58
Tu problema radica en que cuando tenes numeros decimales en el flexgrid, el separador decimal es la coma.

Al pasar un string a números, el compilador de VB interpreta la coma como separador de miles y no de decimales. Es por eso que "te toma sólo la parte entera".

Lo que debes hacer es:

1) guardar el valor de la celda en una variable string
2) reemplazar la coma por el punto
3) convertir ese string en un número usando la funcion CSng()

Ejemplo de código:

Private sub SumarGrilla

dim i as integer
dim j as integer
dim texto as string
dim valor as single
dim subtotal as single

For i = 1 to Grilla.Columnas
subtotal = 0
For j = 1 to 5
texto = grilla.textmatrix ( j , i ) 'Paso 1
texto = replace (texto, "," , "." , 1, -1 , vbTextCompare) 'Paso 2
valor = CSng(texto) 'Paso 3
subtotal = subtotal + valor
Next j

grilla.textmatrix ( 6, i ) = subtotal
Next i

end Sub

Listo!!!!!!

Espero que te haya servido!!!!!! Saludos!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar