Страницы: 1
RSS
Размещение строки поиска в ячейке
 
Добрый день! Подскажите, пожалуйста, можно ли разместить строку поиска (Ctrl+F) сразу в ячейке экселя, чтобы постоянно не нажимать Ctrl+F. Если это сделать можно, то как?
 
Написать макрос поиска и выделения ячеек
 
Евгений И., не совсем понятно, что должно происходить при вводе в ячейку. Отображение диалога с введенным значением? Переход к первой найденной ячейке?
Если первое, то в модуль листа (правый клик по ярлычку листа - Исходный текст)
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "F1" Then 'адрес ячейки
  Application.Dialogs(xlDialogFormulaFind).Show Target
End If
End Sub
 
Спасибо за вариант решения, внес небольшое пояснение ниже
Изменено: Евгений И. - 22.12.2016 15:45:13
 
А все равно ж както придется вызывать. Об этом не думали?
Я сам - дурнее всякого примера! ...
 
Цитата
Казанский написал: не совсем понятно, что должно происходить при вводе в ячейку.
Должен быть переход к найденной ячейке, точно также, как через ввод в строку поиска...то есть мы фактически строку поиска должны "влить" в ячейку. Скорее всего должно быть Поле ввода (строка поиска), это одна ячейка и рядом кнопка Далее, то есть мы пишем искомый текст и нажимаем Далее, он ищет последовательно все варианты...также, как и при строке поиска. Причем поиск должен быть не строго всего текста, а части (то есть как без галочки Строгое совпадение). Возможно так сделать?
Изменено: Евгений И. - 22.12.2016 15:40:12
 
Цитата
Евгений И. написал:
и рядом кнопка Далее, то есть мы пишем искомый текст и нажимаем Далее, он ищет последовательно все варианты
И Вам придется прокручивать лист к кнопке Далее после каждого поиска  8-0
Удобнее назначить макрос на горячую клавишу. В этом файле Ctrl+q. Кнопка тоже работает.
Код в первом приближении - пробуйте, пишите, что надо поменять
Код
'модуль листа
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address(0, 0) = "L183" Then
    Макрос2 Target
  End If
End Sub

'обычный модуль
Sub Макрос2(Optional t)
Static rLastFound As Range
  If IsMissing(t) Then 'вызов по горячей клавише
    If Not rLastFound Is Nothing Then Set rLastFound = Cells.FindNext(rLastFound)
  Else
    Set rLastFound = Cells.Find(What:=t, LookIn:=xlValues, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        , SearchFormat:=False)
  End If
  If Not rLastFound Is Nothing Then rLastFound.Activate
End Sub

Private Sub Auto_Open()
  Application.OnKey "^q", "Макрос2"
End Sub

Private Sub Auto_Close()
  Application.OnKey "^q"
End Sub
 
Спасибо, вроде то, что надо!) Это файл с примером, а так мы строку поиска вынесем на закрепленный участок, в заголовок, буду пробовать
Страницы: 1
Читают тему
Наверх