Подскажите, плиз, как в коде VBA можно использовать встроенную функцию поиска с листа
Модератор: Naeel Maqsudov
Подскажите, плиз, как в коде VBA можно использовать встроенную функцию поиска с листа в Excel?
А как это работает? мне надо на листе искать некоторые значения , поиск по содержимому ячейки на листе....Aent писал(а):А чем в коде VBA не устраивает метод .Find ?
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
А посмотреть HELP по Range.Find Method ? Там же примеры есть ...
Или
http://www.ozgrid.com/VBA/find-method.htm
В крайнем случае (хотя я не понимаю зачем вам это надо)
Application.WorksheetFunction.Find(arg1,arg2,arg3)
Parameters
Name Required/Optional Data Type Description
- Arg1 Required String The name of the worksheet.
- Arg2 Required String The name of the range.
- Arg3 Optional Variant The name of an argument to refine the search.
Return Value
Double
Или
http://www.ozgrid.com/VBA/find-method.htm
В крайнем случае (хотя я не понимаю зачем вам это надо)
Application.WorksheetFunction.Find(arg1,arg2,arg3)
Parameters
Name Required/Optional Data Type Description
- Arg1 Required String The name of the worksheet.
- Arg2 Required String The name of the range.
- Arg3 Optional Variant The name of an argument to refine the search.
Return Value
Double
Андрей Энтелис,
aentelis.livejournal.com
aentelis.livejournal.com
Понял, спасибо, буду разбираться 

Извиняюсь, если оффтоп, но мне кажется задать вопрос в этой ветке будет уместно.
Давно интересовал вопрос: с точки зрения хорошего стиля программирования, в каких случаях правильнее будет применить метод ".Find", а в каких, воспользоваться циклом?
С маленькими диапазонами всё понятно. Цикл в этом случае сделать проще и работает он практически мгновенно. Интересуют большие диапазоны, заполненные данными. Насколько метод ".Find" выигрывает во времени в этом случае по сравнению с циклом перебора ячеек? В статье, ссылку на которую привёл Aent, сожалеют, что метод поиска применяют гораздо реже, чем цикл. Значит он эффективнее?
Давно интересовал вопрос: с точки зрения хорошего стиля программирования, в каких случаях правильнее будет применить метод ".Find", а в каких, воспользоваться циклом?
С маленькими диапазонами всё понятно. Цикл в этом случае сделать проще и работает он практически мгновенно. Интересуют большие диапазоны, заполненные данными. Насколько метод ".Find" выигрывает во времени в этом случае по сравнению с циклом перебора ячеек? В статье, ссылку на которую привёл Aent, сожалеют, что метод поиска применяют гораздо реже, чем цикл. Значит он эффективнее?
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
Практически всегда - да. Вообще, обращение в цикле к большому количеству ячеек - довольно медленный процесс. Когда ячеек несколько (десятков) тысяч тормозаAlexZZZ писал(а):Значит он эффективнее?
очень ощутимые просто на выборку очередного значения по .cells(...,...)
Андрей Энтелис,
aentelis.livejournal.com
aentelis.livejournal.com
Я меня тоже вопрос по методу Find. надо найти в 1-ой колонке значения "999", как определить адрес найденной ячейки, т.е. номер строки?
Код: Выделить всё
Dim iRange As Range
Dim iRow As Long
Dim iFind As String
iFind = "999" 'Что ищем
Set iRange = Columns("A:A").Find(What:=iFind)
If iRange Is Nothing Then
MsgBox "Ячейка не найдена!"
Else
iRow = iRange.Row
MsgBox "Найденная строка- " & iRow
End If
Если одной командой создать массив ячеек, затем в нем искать все, что угодно каким угодно способом, то будет быстрее, чем любой метод, использующий непосредственно ячейки рабочего листа Excel.