This example shows how to use CXlOper::IsRef() and CXlOper::GetRef() to obtain a range reference from an XLOPER function argument. The range is inspected and the greater of its width and height is returned.
//{{XLP_SRC(CheckArgSize)
// NOTE - the FunctionWizard will add and remove mapping code here.
// DO NOT EDIT what you see in these blocks of generated code!
IMPLEMENT_XLLFN2(CheckArgSize, "RR", "CheckArgSize", "Input",
"Demo functions", "Inspect a XLREF passed from Excel",
"Input reference\000", "\0", 1)
extern "C" __declspec( dllexport )
LPXLOPER CheckArgSize(const CXlOper* lpxlopInput)
{
CXlOper xloResult;
//}}XLP_SRC
// Assume that function will fail
xloResult = xlerrNA;
// Is the argument a reference ?
if ( lpxlopInput->IsRef() )
{
// Get a pointer to the range
const CXlRef& xlr = lpxlopInput->GetRef();
// Return larger of width and height, as a number
xloResult = (double)((xlr.Width() > xlr.Height())
? xlr.Width() : xlr.Height());
}
return xloResult.Ret();
}