Function Sumarcolor

1
Function SUMARCOLOR(CeldaColor As String, RangoSuma As String) As Double Dim oRango As Object oRango = ThisComponent.CurrentController.ActiveSheet oCelda = oRango.GetCellRangeByName(CeldaColor).CellBackColor oRango = oRango.GetCellRangeByName(RangoSuma) For c = 0 to oRango.Columns.Count - 1 For f = 0 to oRango.Rows.Count - 1 If oRango.GetCellByPosition(c,f).CellBackColor = oCelda Then oCuenta = oRango.GetCellByPosition(c,f).Value + oCuenta End If Next Next SUMARCOLOR = oCuenta End Function Mira por favor el siguiente archivo y nota como estan introducidos los rangos en la formula funcion, asi es, estan en texto entrecomillado. Nota: Ignora o acepta el error que te da al abrir el archivo, actualiza las sumas pulsando Control-Shift-F9 (recalculo) Para evitar el mensaje de error, que cuando es una sola la celda que produce el error es aceptable, pero cuando son muchas se vuelve bastante molesto, encontré lo siguiente: Después de la declaración de función, poner: on error goto exitErr: y antes de End Function, poner: exitErr: ' return "" Habrá que recalcular con Alt-Shift-F9 de todos modos, pero a mi me funcionó

Transcript of Function Sumarcolor

Page 1: Function Sumarcolor

Function SUMARCOLOR(CeldaColor As String, RangoSuma As String) As DoubleDim oRango As ObjectoRango = ThisComponent.CurrentController.ActiveSheetoCelda = oRango.GetCellRangeByName(CeldaColor).CellBackColoroRango = oRango.GetCellRangeByName(RangoSuma)For c = 0 to oRango.Columns.Count - 1For f = 0 to oRango.Rows.Count - 1If oRango.GetCellByPosition(c,f).CellBackColor = oCelda ThenoCuenta = oRango.GetCellByPosition(c,f).Value + oCuentaEnd IfNextNextSUMARCOLOR = oCuentaEnd Function

Mira por favor el siguiente archivo y nota como estan introducidos los rangos en la formula funcion, asi es, estan en texto entrecomillado.

Nota: Ignora o acepta el error que te da al abrir el archivo, actualiza las sumas pulsando Control-Shift-F9 (recalculo)

Para evitar el mensaje de error, que cuando es una sola la celda que produce el error es aceptable, pero cuando son muchas se vuelve bastante molesto, encontré lo siguiente:Después de la declaración de función, poner:

on error goto exitErr:

y antes de End Function, poner:

exitErr:' return ""

Habrá que recalcular con Alt-Shift-F9 de todos modos, pero a mi me funcionó