Как сделать поиск значений в области ячеек или по всему листу?
Для поиска в области ячеек задайте диапазон ячеек при получении ссылки на объект Range. Если нужно искать по всему листу, то укажите UsedRange или просто одну ячейку, например "A1". Метод Find и FindNext возвращают объект Range, если значение найдено, и, если ничего не найдено, то nil (или null в C#).
Delphi:
var R: ExcelRange; ... S := '77'; R := ASheet.UsedRange[lcid].Find( S, // What: OleVariant;
EmptyParam, // After: OleVariant;
xlValues, // LookIn: OleVariant;
xlPart, // LookAt: OleVariant;
xlByRows, // SearchOrder: OleVariant;
xlNext, // SearchDirection: XlSearchDirection;
False, // MatchCase: OleVariant;
False, //MatchByte: OleVariant
// нужно установить в True, если
EmptyParam // SearchFormat: OleVariant
);
// поиск был завершен удачно, если определен объект R
// поиск следующих ячеек с искомым текстом
if Assigned(R) then begin
Addr := R.Address[True, True, xlA1, EmptyParam, EmptyParam]; repeat
// зальем красным цветом найденные ячейки
R.Interior.Color := RGB(255, 0, 0); R.Font.Color := RGB(255, 255, 220); // найдем следующую
R := ASheet.UsedRange[lcid].FindNext(R); if Assigned(R) then Addr2 := R.Address[True, True, xlA1, EmptyParam, EmptyParam]; // выход, если не найдено или адрес совпал (круг завершен)
until not Assigned(R) or SameText(Addr, Addr2); end;
Find Method
FindNext Method
CellFormat Object
How to: Search for Text in Worksheet Ranges