Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.26;
Скачать: CL | DM;

Вниз

Excel   Найти похожие ветки 

 
Igor_thief ©   (2002-11-10 21:33) [0]

Дорогие Мастера. Как программно можно найти нужную ячейку в таблице Excel’я не перебирая при этом все ячейки в цикле (вызвать стандартный диалог поиска строки в Excel не показывая его пользователю)? Мне для решения задачи надо определить номер рядка в котором находится указанная строка. Excel Xp, Windows Xp.


 
vidiv ©   (2002-11-11 02:33) [1]

Я знаю, но я не Мастер. :(


 
Рыжик ©   (2002-11-11 08:41) [2]

Range:=Workbook.Cells.Find("tra-la-la",EmptyParam, EmptyParam, ...)


 
Igor_thief ©   (2002-11-11 16:35) [3]

Рыжик © (11.11.02 08:41)
Спасибо. Я проверю.


 
Igor_thief ©   (2002-11-11 20:08) [4]

Рыжик © (11.11.02 08:41)
Я попробовал, но этот вариант не работает. Выдается ошибка конвертации типов. Ты не мог бы привести примерчик по-подробние. Написать маленькую прогу которая реализовует сабж? Зарание благодарен. Я при работе с Excel использую компоненты ExcelApplication, ExcelWorkBook... с вкладки Servers.

vidiv © (11.11.02 02:33)
Раскажи.


 
Рыжик ©   (2002-11-12 11:25) [5]

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
ISheet:_Worksheet;
IR,FoundRange:Excel2000.Range;
begin
IDispatch(ISheet) := ExcelApplication1.ActiveWorkbook.Worksheets.Item["Sheet1"];
IDispatch(IR) := Olevariant(ISheet).Cells;
IDispatch(FoundRange) := OleVariant(IR).Find(What:="tra-la-la", LookIn := xlValues, LookAt := xlWhole);
if FoundRange<>nil then
begin
i:=FoundRange.Row;
ShowMessage(IntToStr(i));
end
else ShowMessage("Ничего не найдено");
end;


 
Igor_thief ©   (2002-11-15 20:10) [6]

Рыжик © (12.11.02 11:25)
Спасибочки, я попробую.


 
Igor_thief ©   (2002-11-15 20:30) [7]

Office Xp, Windows Xp.
Список ошибок которые выдает компилятор D7:

Build
[Error] Unit1.pas(44): Undeclared identifier: "Excel2000" //IR,FoundRange:Excel2000.Range;
[Error] Unit1.pas(44): "," or ":" expected but ";" found
[Error] Unit1.pas(45): Type expected but "BEGIN" found
[Error] Unit1.pas(49): Operator not applicable to this operand type //if FoundRange<>nil then
[Error] Unit1.pas(51): Missing operator or semicolon //i:=FoundRange.Row;
[Fatal Error] Project1.dpr(5): Could not compile used unit "Unit1.pas"


 
Рыжик ©   (2002-11-19 08:56) [8]

Excel2000 - это у меня. Надо написать свою версию. Если вы используете компоненты с закладки Servers, то посмотрите, какой модуль там указывается в uses и замените Excel2000 в приведённом коде на нужный. Хотя можно и вообще это дело опустить и написать так: IR,FoundRange:Range; Тогда получите что-то типа "warning: symbol "Range" is specific to a platform". Но работать всё-равно должно.


 
Igor_thief ©   (2002-11-19 13:01) [9]

Я проверю!


 
Igor_thief ©   (2002-12-07 13:13) [10]

Не работает!


 
Neox ©   (2002-12-07 13:25) [11]

Долго, однако, проверял :)


 
Igor_thief ©   (2002-12-07 21:49) [12]

To Neox ©
Да я сразу проверил, но в форум долго не писал. Я писал сразу на мыло к Рыжик.



Страницы: 1 вся ветка

Текущий архив: 2002.12.26;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
14-86075
Треугольник
2002-12-04 04:37
2002.12.26
Помогите кто может ....


1-85897
безумный ламер
2002-12-16 11:41
2002.12.26
Траблы с иконками...


3-85833
Александр11
2002-12-06 10:00
2002.12.26
Пропадают данные в таблицах


1-86009
harismatik
2002-12-16 11:49
2002.12.26
Сортировка в TListView


14-86184
Zhirnov Maxim
2002-12-07 13:23
2002.12.26
Версия СТЭМа ФАИТ песни Belle из оперы Noterdam-De-Pari