Страницы: 1
RSS
Отображение информации о записи в ListBox
 
Есть макрос который открывает окно поиска("UserForm")  по листу с выводом найденных значений в "ListBox1". Необходимо дополнить возможность просмотра найденного в расположении на листе, если выделить "мышкой" наведенное в "ListBox1". Как это происходит при "Ctrl+F найти все" , при выделении найденного, показывает его расположение на листе. Например если искать 151*, то находит три строки. при выделении каждой строки, видно где данная информация находиться на листе.
Изменено: genn931 - 16.11.2018 13:32:43
 
genn931, название с нарушением правил. Годится только для ветки "Работа".

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
нашел здесь на форуме необходимый код, но он у меня не срабатывает, ругается. Видимо я как то не правильно указываю что макрос должен выделять на конкретном листе
Код
'если найден только один эл-т, то переходим к нему
      If j = 1 Then Cells(ListBox1.List(0, 0), stolbV).Select
End Sub

    Private Sub ListBox1_Click() 'если не выбран элемент списка - выход


    If ListBox1.ListIndex = -1 Then Exit Sub 'переход к ячейке листа, содержащей выбранный элемент списка


    Cells(ListBox1.Value, stolbV).Select 'выделяет эту строку как ошибку

End Sub
      
Изменено: genn931 - 16.11.2018 13:19:03
 
Сначала - о названии темы. Предлагайте. Модераторы заменят.
 
Цитата
genn931 написал:
необходимый код
это код который решает поставленную задачу
код, в котором есть слово ListBox1 не является автоматически кодом, решающим Вашу конкретную задачу
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
vikttur написал:
Сначала - о названии темы. Предлагайте. Модераторы заменят.
выделение найденного значения поиском  
 
При наведении мышкой можно, но сложно.
Проще - двйной клик на строке в ListBox.
 
Цитата
vikttur написал:
Проще - двйной клик на строке в ListBox.
Это и имел в виду, не правильно выразился. Конечно двойной клик.
 
А зачем обязательно двойной? Можно и одиночным. Замените процедуру:
Код
Private Sub ListBox1_Click()
Dim Rng As Range, iRow As Long
'если не выбран элемент списка - выход
    If ListBox1.ListIndex = -1 Then Exit Sub
    Set Rng = Columns(10).Find(what:=ListBox1.Value, LookIn:=xlValues, lookAt:=xlWhole)
    If Not Rng Is Nothing Then iRow = Rng.Row
'переход к ячейке листа, содержащей выбранный элемент списка
    Cells(iRow, 10).Select
End Sub
 
Цитата
Юрий М написал:
Можно и одиночным
Огромное спасибо Юрий! Все работает). Хорошо когда человек понимает а не слепо копирует по обезьяни как я). Все спасибо!
 
Цитата
Юрий М написал:
Замените процедуру:
Юрий заменил, работает но не совсем. Если начинаю искать 151* как пример, находит в трех реестрах(№13, 14, 17) когда кликаю на два первых, их правильно показывает. Когда кликаю на третью строку в ListBox. то в реестре показывает не в реестре №17, а в №14
 
Всё верно: находит первое совпадение. Я в таких случаях записываю в ЛистБокс (КомбоБокс) номер строки, где найдено при заполнении - тогда с поиском проблем нет.
 
Цитата
Юрий М написал:
находит первое совпадение
Да согласен, так можно, но хотелось бы как в примере, просто увидел пример здесь: https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=87065&am...
тут если одно и тоже значение несколько раз разместить, то при клике переходит именно на само значение а не на первое найденное.  
 
Цитата
genn931 написал:
так можно, но хотелось бы как в примере
Вам нужен результат, или обязательно, как в примере? См. вариант по моему "сценарию" )).
 
Конечно результат, да именно так! Спасибо Юрий!
Страницы: 1
Наверх