На этом шаге мы рассмотрим организацию поиска текста в заданном диапазоне ячеек.
На прошлом шаге мы рассмотрели случай поиска на всем листе рабочей книги Excel. Чтобы произвести поиск текста в ограниченной области ячеек, необходимо вызвать метод Find объекта Range, где Range - область (интервал ячеек). Например:
FindRange:=Range('Al:Н500').Find('222');
В этом случае поиск будет выполнен только в области ячеек, ограниченной интервалом А1:Н500.
Полная спецификация вызова метода Find:
Find(What, After, Lookln, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte);
Аргументы метода Find приведены в таблице 1.
Аргумент | Тип | Значение |
---|---|---|
What | String | Строка поиска |
After | Range | Ячейка или область, после которой производится поиск; позволяет задать адрес начала поиска |
LookIn | Integer | Где ищем (в значениях ячейки, в формулах или в примечаниях). Возможные значения:
|
LookAt | Integer | Поиск совпадения строки текста целиком или ее части. Возможные значения:
|
SearchOrder | Integer | Порядок поиска (перебираем строки или столбцы). Возможные значения:
|
SearchDirection | Integer | Направление поиска (к началу, к концу). Возможные значения:
|
MatchCase | Boolean | Учет регистра букв при поиске (True - учитывать регистр, по умолчанию - False) |
MatchByte | Boolean | Предназначен для двухбайтовых символов (в версиях для Windows не используется) |
Поиск в заданной области представлен на рисунке 1.
Рис.1. Результат работы приложения
Приведем полный текст приложения.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComObj; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Label1: TLabel; Edit1: TEdit; Label2: TLabel; Edit2: TEdit; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation var E:variant; WB: Variant; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); //Создание объекта Excel и отображение окна begin E:=CreateOleObject('Excel.Application'); E.Visible:=True; end; procedure TForm1.Button2Click(Sender: TObject); //Создание рабочей книги begin E.WorkBooks.Add; WB:=E.WorkBooks.Item[1]; // Ссылка на рабочую книгу end; procedure TForm1.Button3Click(Sender: TObject); //Заполнение области begin WB.ActiveSheet.Range[Edit1.Text].Value:='123'; end; procedure TForm1.Button4Click(Sender: TObject); //Поиск текста var S:String; FindRange:variant; begin if Edit2.Text<>'' then begin try FindRange:=WB.ActiveSheet.Range[Edit1.Text].Find(What:=Edit2.Text); S:=FindRange.Text; except MessageBox(0,'Искомый текст не найден!','Внимание!',0); end; end; end; end.
На следующем шаге мы рассмотрим организацию замены текста.