-
Нужен поиск по строкам листа Excel заданного значения без учета регистра, начиная с самой первой ячейки.
exCell:=exUsedRange.Find(What:=StrTemplate) ;
Так ищет с учетом регистра. Но добавить в строку поиска MatchCase:=False не получается. Выходит ошибка в зависимости от вариантов (Несовпадение типов, Неверный индекс ).
Помогите, пожалуйста.
-
doc.Range.Find.Execute(
FindText:=txt,
MatchCase:=True)
-
Пробую написать: exCell := exUsedRange.Find.Execute(FindText:=StrTemplate, MatchCase:=True); При выполнении ошибка: Недопустимое число параметров.
-
Это точно строка поиска для Excel, а не для Word?
-
Да, не посмотрел, откуда копипастил. Попробовал код из заглавного сообщения — работает.
-
exCell:=exUsedRange.Find(What:=StrTemplate) ; Это работает, но с учетом регистра. Мне надо добавить поиск по строкам Excel без учета регистра (может быть, и другие параметры поиска), но не получается. Вот в этом и вопрос.
-
-
> Это работает
соль в том, что это тоже работает: vRange.Find(What := 'текст', MatchCase := True)
-
exCell := exUsedRange.Find.Execute(FindText:=StrTemplate, MatchCase:=True); У меня выдает ошибку: Несовпадение типов. В этом и был вопрос.
-
exCell := exUsedRange.Find.Execute(FindText:=StrTemplate, MatchCase:=True);
При выполнении ошибка: Недопустимое число параметров.
exCell := exUsedRange.Find.Execute(FindText:=StrTemplate, MatchCase:=True);
У меня выдает ошибку: Несовпадение типов.
один и тот же код, но ДВЕ разные ошибки.
деза в каждом слове
-
Исправлено, ctrl+C, ctrl+v подвело. ))) exCell:=exUsedRange.Find(What:=StrTemplate, MatchCase:=False);
У меня выдает ошибку: Несовпадение типов. exCell := exUsedRange.Find.Execute(FindText:=StrTemplate, MatchCase:=True); При выполнении ошибка: Недопустимое число параметров.
-
const some_string = 'В букваре сказано, что MatchCase опционален с дефолтным значением False. То есть и так уже без учета регистра';
procedure TForm1.Button1Click(Sender: TObject); var Excel, WorkSheet, Something : OleVariant; begin Excel := CreateOleObject('Excel.Application'); Excel.Visible := True; Excel.Workbooks.Add(); WorkSheet := Excel.Workbooks[1].WorkSheets[1]; WorkSheet.Range['F10'].Value := AnsiUpperCase(some_string); Something := WorkSheet.Cells.Find(What := AnsiLowerCase(some_string)); ShowMessage('Искали это: ' + AnsiLowerCase(some_string) + #13#10'нашли вот это: ' + Something.Value + #13#10'Вот где оно найдено: ' + Something.Address); //Excel.Workbooks.Close; //Excel.Quit; end;
-
> ку ку (15.05.18 21:03) [11]
Код рабочий. Спасибо за пример.
Хотелось бы в строку .Find(...) добавить: MatchCase:=False или MatchCase:=True.
А также указать, что поиск только в значениях, а не в формулах и т.п. (или наоборот в зависимости от необходимости).
Это можно сделать или нет?
-
как минимум это сделать можно. как максимум это даже работает ровно таким образом как и описано в доке.
ошибка была в том, что объектной модели куча чего имеет метод файнд. и разумеется с совершенно разными параметрами.
-
> ку ку (17.05.18 11:45) [13]
И как будет выглядеть работающий код для поиска с параметрами?
-
const some_string = 'В букваре сказано, что MatchCase опционален с дефолтным значением False. То есть и так уже без учета регистра';
procedure TForm1.Button1Click(Sender: TObject); var Excel, WorkSheet, Something : OleVariant; begin Excel := CreateOleObject('Excel.Application'); Excel.Visible := True; Excel.Workbooks.Add(); WorkSheet := Excel.Workbooks[1].WorkSheets[1]; WorkSheet.Range['F10'].Value := AnsiUpperCase(some_string); Something := WorkSheet.Cells.Find(What := AnsiLowerCase(some_string), MatchCase := True); if not VarIsClear(Something)then ShowMessage('Искали это: ' + AnsiLowerCase(some_string) + #13#10'нашли вот это: ' + Something.Value + #13#10'Вот где оно найдено: ' + Something.Address) else ShowMessage('С учетом регистра тоже все окей. Ничего не нашли.');
//Excel.Workbooks.Close; //Excel.Quit; end;
-
> ку ку (17.05.18 13:33) [15]
Спасибо. Но у меня выдается ошибка: Несовпадение типов. Ничего не изменилось, в этом и был вопрос.
Excel 2016.
-
мадмуазель.
у меня тоже эксель 2016 и все работает.
ошибка была в том, что объектной модели куча чего имеет метод файнд. и разумеется с совершенно разными параметрами.
там между строк громкими буквами написано, что файнд вы вызываете не у того объекта у которого его надо вызывать.
-
> ку ку (17.05.18 16:45) [17]
Я скопировала Ваш код. И получила ошибку: Несовпадение типов.
|