Mensaje enviado por "AcrraidX" <lenar666@hotmail.com> el 15/03/2002
Que hay listeros, un grán saludo
Me hice esta función que sirve para sumar los números de una columna o fila de un flexgrid, a mí me ha sido de mucha utilidad, sobre todo cuando se trata de facturación o cosas por el estilo.
Epero que les sea útil a alguien como me ha sido útil a mí, agradecería cualquier critica para implementarla en mi código. Ahí les vá...
Public Function Sumar(Grid As MSFlexGrid, Optional SumVertical As Boolean = True, _
Optional ColOrRow As Long, Optional IncluirFixeds As Boolean = False) As Double
'esta función suma en un grid una columana o una fila
'depende si el argumento sumVertical está está establecido a true.
'si sumvertical está establecido a true hace la sumatoria tomando
'los valores de la columna especificada en el parámetro ColOrRow,
'de otro modo la sumatoria se realiza tomando los valores
'de la fila especificada en el parámetro ColOrRow.
'incluirfixeds es un parámetro que usa la función para saber
'si las filas o colmnas fijas también se usarán para tomar los
'valores a sumar.
Dim GridTmp As MSFlexGrid
Set GridTmp = Grid
'almacena el total.
Dim totalTMP As Double
totalTMP = 0
'contador
Dim j As Long
j = 0
With GridTmp
If SumVertical Then
'verificando que la columna especificada sea
'una columna válida del grid.
If ColOrRow > (.Cols - 1) Then
Sumar = 0
Exit Function
End If
'operación incluyendo filas fijas.
.Col = ColOrRow
If IncluirFixeds Then
'bucle de suma.
For j = 0 To .Rows - 1
.Row = j
totalTMP = totalTMP + CDbl(Format(.Text, "#,##0.00"))
Next j
Else
'operación exluyendo filas fijas
'comprobando que hayan mas filas no fijas que fijas.
If .Rows > .FixedRows Then
For j = .FixedRows To .Rows - 1
.Row = j
totalTMP = totalTMP + CDbl(Format(.Text,"#,##0.00"))
Next j
Else
totalTMP = 0
Exit Function
End If
End If 'de incluirFixeds
Else 'de SumarVertical.
'verificando que la fila especificada se una fila
'válida del grid.
If ColOrRow > (.Rows - 1) Then
Sumar = 0
Exit Function
End If
'operación incluyendo columnas fijas.
.Row = ColOrRow
If IncluirFixeds Then
'bucle de suma.
For j = 0 To .Cols - 1
.Col = j
totalTMP = totalTMP + CDbl(Format(.Text, "#,##0.00"))
Next j
Else
'operación exluyendo columnas fijas
'comprobando que hayan mas columnas no fijas que fijas.
If .Cols > .FixedCols Then
For j = .FixedCols To .Cols - 1
.Col = j
totalTMP = totalTMP + CDbl(Format(.Text,"#,##0.00"))
Next j
Else
totalTMP = 0
Exit Function
End If
End If 'de incluirFixeds
End If 'de Sumvertical.
End With
Sumar = totalTMP
End Function