The range returned corresponds to the current selection, defined by the Row, Col, RowSel, and ColSel properties. The range is normalized, so range.r1 <= range.r2 and range.c1 <= range.c2. This makes it easy to loop through the selection. For example: int total = 0; CellRange rg = flex.Selection; for (int r = rg.r1; r <= rg.r2; r++) for (int c = rg.c1; c <= rg.c2; c++) total += (int)flex[r,c]; Console.WriteLine("The total is: {0}", total);