This example uses COper::IsVector(), COper::GetVectorCount() and COper::VectorCell() to iterate the cells in a COper argument containing a vector.
//{{XLP_SRC(VectorSum) // NOTE - the FunctionWizard will add and remove mapping code here. // DO NOT EDIT what you see in these blocks of generated code! IMPLEMENT_XLLFN2(VectorSum, "RP", "VectorSum", "Input", "Demo functions", "Returns the sum of a vector", "Input vecto" "r\000", "\0", 1) extern "C" __declspec( dllexport ) LPXLOPER VectorSum(const COper* lpopInput) { CXlOper xloResult; //}}XLP_SRC BOOL bOk = TRUE; // This function doesn't work on arrays // so return an error if ( !lpopInput->IsVector() ) { xloResult = xlerrValue; return xloResult.Ret(); } // Iterate vector's cells, adding up // any numeric values USHORT i, cCells; double dSum = 0.0; cCells = (USHORT)lpopInput->GetVectorCount(); for ( i = 0; i < cCells; i++ ) { if ( lpopInput->VectorCell(i).IsDouble() ) dSum += (double)lpopInput->VectorCell(i); } // Return the total xloResult = dSum; return xloResult.Ret(); }