![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Здравствуйте!
Прошу у разбирающихся помощи. Нужен кусок кода с реализацией метода Find для листа Excel. Задача простая: в некоем диапазоне найти ячейку, значение которой равно S, где S - тестовая строка, и поместить номер строки в переменную n. Программа написана, отлажена и нормально работает, но поиск сейчас реализован методом перебора. Претензия пользователя - скорость работы. Кажется мне, что если применить Find, то будет отрабатывать быстрее. |
|
#2
|
||||
|
||||
|
Код:
procedure TForm1.FormCreate(Sender: TObject);
var e: OleVariant;
n: integer;
begin
e:= CreateOleObject('Excel.Application');
e.Workbooks.Add;
//вставляем в B4 текст
e.Cells[4,2].Value:= 'Hello World!';
e.Visible:= true;
//поиск по книге (ставим курсор на ячейку A1)
e.Cells[1,1].Select;
e.Cells.Find(What:= 'Hello World!', After:= e.ActiveCell,
LookIn:= -4123, LookAt:= 2,
SearchOrder:= 1, SearchDirection:= 1,
MatchCase:= false, SearchFormat:= false).Activate;
//помещаем номер строки с заданным текстом в переменную
n:= e.ActiveCell.Row;
ShowMessage(inttostr(n));
end; |
|
#3
|
|||
|
|||
|
Большое спасибо за ответ! А можно по паре слов по поводу смысла параметров - LookIn:= -4123, LookAt:= 2, SearchOrder:= 1, earchDirection:= 1, MatchCase:= false, SearchFormat:= false - Это чтобы выйти хотя бы на какой-то уровень осознания
|
|
#4
|
||||
|
||||
|
Цитата:
LookIn - способ поиска в ячейке. Данное значение ищет искомый текст даже в формулах (такой поиск стоит по умолчанию).Например, поиск "мимо" формул - 4163. LookAt - стандартный параметр, не знаю на что он влияет, и какие еще значения может принимать... SearchOrder - искать по строкам (можно искать по столбцам, но по умолчанию в поиске стоит по строкам). SearchDirection - в какую строну идти (вверх документа или вниз). Мы идем вниз, собственно по данной причине перед поиском ставим указатель на первую ячейке. MatchCase - если true, то ищет полное совпадение искомого текста. Например, в первой ячейке текст 'Чел', а во второй 'Человек'. Если матчкэйс стоит на true, и искомое слово - 'Чел' то он найдет только первое значение. А если false, то оба. SearchFormat - дополнительный формат поиска в excel'e. С ним не сталкивался, как пользоваться не знаю. P.S. Если устраивает простой стандартный поиск, то можно оставить только параметры what и after. Остальные не обязательны к заполнению, но лучше все-таки использовать полную конструкцию. Последний раз редактировалось Ildar-tsr, 28.11.2011 в 12:54. |
|
#5
|
|||
|
|||
|
Большое спасибо за исчерпывающий ответ!
|