Страница 1 из 2
Подскажите, плиз, как в коде VBA можно использовать встроенную функцию поиска с листа
Добавлено: 26 май 2009, 18:04
vladyank
Подскажите, плиз, как в коде VBA можно использовать встроенную функцию поиска с листа в Excel?
Re: Подскажите, плиз, как в коде VBA можно использовать встроенную функцию поиска с л
Добавлено: 26 май 2009, 18:12
Aent
А чем в коде VBA не устраивает метод .Find ?
Re: Подскажите, плиз, как в коде VBA можно использовать встроенную функцию поиска с л
Добавлено: 26 май 2009, 18:40
vladyank
Aent писал(а):А чем в коде VBA не устраивает метод .Find ?
А как это работает? мне надо на листе искать некоторые значения , поиск по содержимому ячейки на листе....
Re: Подскажите, плиз, как в коде VBA можно использовать встроенную функцию поиска с л
Добавлено: 26 май 2009, 23:47
Aent
А посмотреть 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
Re: Подскажите, плиз, как в коде VBA можно использовать встроенную функцию поиска с л
Добавлено: 27 май 2009, 09:53
vladyank
Понял, спасибо, буду разбираться

Re: Подскажите, плиз, как в коде VBA можно использовать встроенную функцию поиска с л
Добавлено: 27 май 2009, 11:38
AlexZZZ
Извиняюсь, если оффтоп, но мне кажется задать вопрос в этой ветке будет уместно.
Давно интересовал вопрос: с точки зрения хорошего стиля программирования, в каких случаях правильнее будет применить метод ".Find", а в каких, воспользоваться циклом?
С маленькими диапазонами всё понятно. Цикл в этом случае сделать проще и работает он практически мгновенно. Интересуют большие диапазоны, заполненные данными. Насколько метод ".Find" выигрывает во времени в этом случае по сравнению с циклом перебора ячеек? В статье, ссылку на которую привёл Aent, сожалеют, что метод поиска применяют гораздо реже, чем цикл. Значит он эффективнее?
Re: Подскажите, плиз, как в коде VBA можно использовать встроенную функцию поиска с л
Добавлено: 27 май 2009, 12:15
Aent
AlexZZZ писал(а):Значит он эффективнее?
Практически всегда - да. Вообще, обращение в цикле к большому количеству ячеек - довольно медленный процесс. Когда ячеек несколько (десятков) тысяч тормоза
очень ощутимые просто на выборку очередного значения по .cells(...,...)
Re: Подскажите, плиз, как в коде VBA можно использовать встроенную функцию поиска с л
Добавлено: 27 май 2009, 12:21
Tana_L
Я меня тоже вопрос по методу Find. надо найти в 1-ой колонке значения "999", как определить адрес найденной ячейки, т.е. номер строки?
Re: Подскажите, плиз, как в коде VBA можно использовать встроенную функцию поиска с л
Добавлено: 27 май 2009, 12:42
AlexZZZ
Код: Выделить всё
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
А если нужен адрес найденной ячейки, тогда: iRange.Address
Re: Подскажите, плиз, как в коде VBA можно использовать встроенную функцию поиска с л
Добавлено: 27 май 2009, 13:11
SAS888
Если одной командой создать массив ячеек, затем в нем искать все, что угодно каким угодно способом, то будет быстрее, чем любой метод, использующий непосредственно ячейки рабочего листа Excel.