Страницы: 1
RSS
Как сделать скролл на Listbox?, быстрый переход на другой лист через список листов
 
Excel 2016.
У меня файл с кучей листов. Делаю удобный переход между ними (да, я знаю что можно нажать ПКМ в левом нижнем углу самого Excel, где стрелки перехода между листами, но туда надо тянуться мышкой, что не очень удобно на большом мониторе).

Список листов вызывается сочетанием CTRL + ALT + W
Переход на нужный лист — двойной щелчок на нужном листе или кнопкой.

Вопрос. Как сделать, чтобы работал скролл мышкой в Listbox? Яндекс с гуглом предлагают страшные решения по перехвату мышиного колесика с глюками и без гарантии нормальной работы. Неужели так все плохо? Ведь если скролл-бар автоматом появляется, по логике, сам скролл мышкой должен работать. Может опция какая-то специфическая есть у ListBox, которую я не выгуглил?
 
Цитата
zamboga написал:
Может опция какая-то специфическая есть у ListBox, которую я не выгуглил?
У Listbox'а нет такой опции. Есть альтернатива ListBox'у ListView, но ListView может не быть на каком-либо компьютере и нужно будет пользователю устанавливать ListView отдельно.
 
Запускать буду только у себя. Но если еще и отдельную среду для такой мелочи надо разворачивать, то это тоже костыль какой-то, что не айс.
 
Если только для себя, то попробуйте ListView. Думаю, что в гугле есть информация по этому элементу управления.
Никакой среды не надо, просто нужен один файл, в котором находится ListView, и нужно зарегистрировать этот файл. То есть нужно сделать только два действия:
1) скачайте файл с ListView
2) зарегистрируйте этот файл
Думаю, что эта информация есть в гугле.
Изменено: Karataev - 13.12.2016 17:49:05
 
zamboga!
Зачем Вам нужен такой "огород"?
Воспользуйтесь гиперссылками - "Дёшево и сердито"!  :D
См. файл.
 
Мотя, это и так у меня есть, первый лист в моем рабочем файле в рабочем файле и есть лист с индексами. Оглавление листов сделать не сложно=)

Когда листов овердофига, то скажите мне, как мне быстро перейти, например, с листа 40 на лист 80? А если листы без номеров, а имеют текстовые имена?
Ваш сценарий:
1. найти лист 1 в длинном горизонтальном списке листов (или мышкой идти в левый нижний угол, и выбирать там через ПКМ. Но там я сразу выберу нужный лист).
2. перейти на этот лист
3. перейти с него на нужный лист.

Мой сценарий:
1. Хоткей со списком листов
2. Сразу переход на нужный.
 
Цитата
zamboga написал:
А если листы без номеров, а имеют текстовые имена?
Это не имеет никакого значения - проверьте!
С переходами с листа на лист - проблематично...
 
Цитата
zamboga написал: А если листы без номеров, а имеют текстовые имена?
Цитата
Мотя написал: Это не имеет никакого значения - проверьте!
Это я к тому, что если есть цифровой индекс — то искать нужный лист — легче.

Цитата
Мотя написал: С переходами с листа на лист - проблематично...
Вот именно поэтому я и написал то, что  в первом посте=)

Цитата
Karataev написал: Если только для себя, то попробуйте ListView
Поизучал. Решил, что мне все-таки лень его сейчас внедрять.

Обнаружил, что если в диалоговом окне в форме ListBox зажать ЛЕВУЮ кнопку мыши и НЕ ОТПУСКАТЬ её, то можно скроллировать список, просто двигая саму мышку вверх и вниз.
 
Открою вам секрет - по сочетанию клавиш можно запускать макрос, который переходит на лист из содержанием)
Но по моему мнению - имеет место неэффективная организация данных. Когда листов 40-80 или "овердофига" - тут нужно задуматься в другом направлении - а правильные ли инструменты я использую для работы с данными.
 
Цитата
Dima S написал:
Когда листов 40-80 или "овердофига" - тут нужно задуматься в другом направлении - а правильные ли инструменты я использую для работы с данными.
АБСОЛЮТНО согласна!!!
 
Цитата
zamboga написал:
Список листов вызывается сочетанием CTRL + ALT + W
Переход на нужный лист — двойной щелчок на нужном листе или кнопкой.
(Вариант)
Что бы нажать одновременно CTRL+ALT+W всё равно придётся отпустить замученную работой мышу.
Дайте ей отдохнуть !
Скролить - стрелками клавдии вниз/вверх.
А кнопке Перейти_на_лист присвойте свойству Default значение True в окне Properties -
переход на лист - Enter (не трогая грызуна руками).
 
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=54585&TITLE_SEO=54585&MID=495834&tags=&q=%D0%BF%D1%80%D0%BE%D0%BA%D1%80%D1%83%D1%82%D0%BA%D0%B0+Lis­tbox&FORUM_ID%5B0%5D=0&DATE_CHANGE=0&order=relevance&s=%D0%9D%D0%B0%D0%B9%D1%82%D0%B8#message495834
 
А котам так и хочется всю работу на мышей спихнуть  :) .
 
zamboga, может так?
Вариант с webbrowser. К сожалению мне не удалось после вызова формы установить фокус на браузере, чтобы можно было сразу скроллить, а не кликать мышкой на селекты. Может кто подскажет.
 
Если все листы будут с накопительным числовым индексом и постоянным префиксом (как в приложенном примере), то можно запрашивать номер листа Inputbox-ом и осуществлять переход на соответствующий лист
 
перехватом сообщений WM_MOUSEWHEEL... (в общем и целом)
Изменено: JeyCi - 14.12.2016 08:48:56
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
zamboga написал: Это я к тому, что если есть цифровой индекс — то искать нужный лист — легче.
вариант2:
переделать всё
- фильтровать в листбокс по вводимому значению в текстбокс... и скроллить не надо будет
Изменено: JeyCi - 14.12.2016 08:58:25
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
Dima S написал:
Открою вам секрет - по сочетанию клавиш можно запускать макрос, который переходит на лист из содержанием)
Знаю=)
Но диалоговое окошко-Листбокс в центре экрана мне показалось удобнее.
Цитата
Dima S написал:
Когда листов 40-80 или "овердофига" - тут нужно задуматься в другом направлении - а правильные ли инструменты я использую для работы с данными.
Цитата
Мотя написал:
АБСОЛЮТНО согласна!!!
Цитата
Grr написал:
Если все листы будут с накопительным числовым индексом и постоянным префиксом (как в приложенном примере), то можно запрашивать номер листа Inputbox-ом и осуществлять переход на соответствующий лист
Число листов и их имена динамически меняются.

Я работаю с контекстной рекламой, каждый лист — список запросов определенной группы, группы образуются тоже динамически (комбинированием разных типов слов), так что число листов динамически меняется в зависимости от проекта.
Есть разные самописные скрипты, в зависимости от результата их работы мне надо "ручками" проверить 2-5-10-100-n ячеек, взглянуть на итоговый результат их работы.
По другому хранить проекты, запускать по ним скрипты будет еще неудобнее. В Access лезть пока  не хочу=)
Поэтому мне нужен быстрый и удобный способ прыгать между листами.

Цитата
С.М. написал:
Что бы нажать одновременно CTRL+ALT+W всё равно придётся отпустить замученную работой мышу.
Дайте ей отдохнуть !
Кто вам сказал? Хоткей под левой рукой нажимается идеально, правая управляет мышой. На "чистый" Alt повесить не могу, т.к. "панель быстрого доступа" и так давно занята.

Цитата
RAN написал:
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=54585&TITLE_SEO=54585&MID=495...
Цитата
JeyCi написал:
перехватом сообщений WM_MOUSEWHEEL ... (в общем и целом)
Спасибо, конечно, но в стартовом топике я именно про это и писал, удивляясь, что когда в ListBox появляется скролл-бар, он не работает, и решения, что я нашел — перехватывать колесо мыши с кучей глюков. Собсна, мой вопрос то был: какого фига так сложно, может есть проще способ, который я не выгуглил?

Цитата
Jungl написал:
Вариант с webbrowser. К сожалению мне не удалось после вызова формы установить фокус на браузере, чтобы можно было сразу скроллить, а не кликать мышкой на селекты. Может кто подскажет.


быстрый переход на лист(web).xlsm  (65.2 КБ)
Прикольная реализация, но отсутствие фокуса на старте, конечно, непонятно. А такую форму можно сделать динамически расширяемой по высоте в зависимости от числа строк?
Изменено: zamboga - 14.12.2016 13:48:54
 
Цитата
JeyCi написал:
- фильтровать в листбокс по вводимому значению в текстбокс... и скроллить не надо будет
интересная мысль. Т.е. реализовать что-то типа быстрого поиска. Это, возможно, будет еще удобнее в итоге, чем большая простыня с поиском и выбором нужного листа.
 
Цитата
Jungl написал:
К сожалению мне не удалось после вызова формы установить фокус на браузере, чтобы можно было сразу скроллить, а не кликать мышкой на селекты. Может кто подскажет.
Как вариант, искать координаты центра монитора/рабочего окна Excel, (диалоговое окно ведь появляется в центре) и вызывать событие "Клик мышкой в эту точку". Но реализация такого пока вне сферы моих знаний в VBA.
 
Цитата
zamboga написал #18:
Хоткей под левой рукой нажимается идеально
Ну, Вы - акробат  :) .
Цитата
Мотя написал #5:
zamboga !
Зачем Вам нужен такой "огород"
Цитата
zamboga написал:
Переход на нужный лист — двойной щелчок на нужном листе или кнопкой.
Взял идею Моти (из #5), но без гиперссылок :
Изменено: С.М. - 14.12.2016 17:02:38
 
zamboga, свои сообщения можно дополнять.
 
Я просто оставлю это здесь, думаю пригодится не только автору.
После вызова формы можно пользоваться скроллом(использованы win api функции, функция проверки на нажатия клавиш, функция эмуляции клавиш(в данном случае эмулируется клавиша TAB при активации формыи тогда select'ы становятся активными для скролла мышью))
Форма подогнана максимально под окно выбора листа в excel 2016, без кнопок. Проверялось на 2007 и 2016.
p.s. кому не сложно, проверьте под ваши системы. У меня лично ничего не крашилось.
Форма запускается сочетанием клавиш CTRL+Q
Изменено: Jungl - 14.12.2016 22:31:06
 
Jungl,это бомба=)

Спасибо!
Страницы: 1
Наверх