//SearchOrder (vOpt works here)
#define xlByRows COleVariant( 1L )
#define xlByColumns COleVariant( 2L )
//SearchDirection (required but usually has no effect)
#define xlNext 1L
#define xlPrev 2L
// MatchCase
#define xlMatchCase COleVariant( 1L )
#define xlIgnoreCase COleVariant( 0L )
// MatchByte
// ignored, use vOpt
_variant_t vOpt(DISP_E_PARAMNOTFOUND, VT_ERROR);
LPDISPATCH lpDisp = NULL;
range = sheet.GetUsedRange();
lpDisp =range.Find(COleVariant("A"), vOpt, xlFormulas, xlPart,
xlByRows, xlNext, xlIgnoreCase, vOpt)
if(lpDisp)
{
//first
Range iFirst = range;
iFirst.AttachDispatch(lpDisp);
iFirst.Select();
iFirst.Activate();
TRACE( _T("row=%ld col=%ld\n"), iFirst.GetRow(), iFirst.GetColumn());
Range iNext = range.FindNext(vOpt);
do
{
TRACE( _T("row=%ld col=%ld\n"),
iNext.GetRow(), iNext.GetColumn());
iNext = range.FindNext( _variant_t(iNext) );
} while (iNext.GetRow() != iFirst.GetRow()
|| iNext.GetColumn() !=iFirst.GetColumn() );
}