Копирование АДРЕСА текущей ячейки в буфер обмена, или как быстро создавать внутренние гиперссылки по книге?, Нужно для быстрого создания гиперссылок внутри книги Excel с кучей листов.
МатросНаЗебре, В буфер копирует через раз, то нормально, то ошибка, как и на предыдущем макросе от webley Из буфера обратно ссылку не вставляет, даже если она "нормально" скопировалась. 2й скрин-каст: https://i.imgur.com/JSJEso0.gif
Файл для растерзания приложил. Заполнен случайными данными.
ЧЯДНТ? (пока всё это без хоткеев, тупо в лоб через gui, а потом и хоткей и кнопки на риббон сделаю)
Копирование АДРЕСА текущей ячейки в буфер обмена, или как быстро создавать внутренние гиперссылки по книге?, Нужно для быстрого создания гиперссылок внутри книги Excel с кучей листов.
Задача: быстро создавать навигацию по книге с кучей листов.
Как сейчас: 1. запомнить в голове адрес и лист целевой ячейки 2. Переходим на лист, где создаем ссылку 3. CTRL+K 4. Мучительно ищем в огромном списке нужный лист (а по дефолту Excel предлагает список имен, а не листов! Жутко бесит и неудобно. Т.е. и тут лишние клики мышки, нажать "место в документе", потом закрыть "определённые имена", потом уже открыть "список листов" и искать нужный) 5. Ручками пишем адрес ячейки.
Как хочу: 1. Хоткей на копирование в буфер адреса ячейки с полным путем. Какой? 2. Переходим на лист, где создаем ссылку 3. CTRL+K (или что-то другое, если есть такой вариант) 4. CTRL+V — но сильно сомневаюсь, что прокатит, т.к. мне надо не только адрес ячейки вставить, но ещё и путь до целевого листа. Как тогда ещё можно?
Всякие макросы для автоматического создания оглавления у меня есть, но мне необходимо создавать всякие внутренние переходы между листами, а не через оглавление.
PS. Если есть хоть какой-то вариант решения задачи через Надстройку Plex или ASAP — то тоже пойдет, они обе у меня есть.
написал: Диапазон в массив, сортируем массив, выгружаем обратно отсортированный массив.
Можно чуть подробнее? Вы имеете в виду преобразовать "умную" в "обычную"? Массив же это формулы со {}, чёт не могу сообразить, как их здесь использовать.
написал: Когда вы сортируете в диапазоне, Excel спрашивает, нужно-ли расширить диапазон, а когда вы используете "таблицу", он ничего не спрашивает, просто расширяет.И у вас 2 выхода, на выбор - отказаться от "таблицы", или отказаться от сортировки.
2ALL: я правильно понимаю, что в 2023г проблема до сих пор не решена? Т.е. если у нас диапазон или "умная таблица", то выполнить сортировку выделения, т.е. лишь только части "умной таблицы" (диапазона) в принципе невозможно?
Jungl написал: К сожалению мне не удалось после вызова формы установить фокус на браузере, чтобы можно было сразу скроллить, а не кликать мышкой на селекты. Может кто подскажет.
Как вариант, искать координаты центра монитора/рабочего окна Excel, (диалоговое окно ведь появляется в центре) и вызывать событие "Клик мышкой в эту точку". Но реализация такого пока вне сферы моих знаний в VBA.
JeyCi написал: - фильтровать в листбокс по вводимому значению в текстбокс... и скроллить не надо будет
интересная мысль. Т.е. реализовать что-то типа быстрого поиска. Это, возможно, будет еще удобнее в итоге, чем большая простыня с поиском и выбором нужного листа.
Dima S написал: Открою вам секрет - по сочетанию клавиш можно запускать макрос, который переходит на лист из содержанием)
Знаю=) Но диалоговое окошко-Листбокс в центре экрана мне показалось удобнее.
Цитата
Dima S написал: Когда листов 40-80 или "овердофига" - тут нужно задуматься в другом направлении - а правильные ли инструменты я использую для работы с данными.
Grr написал: Если все листы будут с накопительным числовым индексом и постоянным префиксом (как в приложенном примере), то можно запрашивать номер листа Inputbox-ом и осуществлять переход на соответствующий лист
Число листов и их имена динамически меняются.
Я работаю с контекстной рекламой, каждый лист — список запросов определенной группы, группы образуются тоже динамически (комбинированием разных типов слов), так что число листов динамически меняется в зависимости от проекта. Есть разные самописные скрипты, в зависимости от результата их работы мне надо "ручками" проверить 2-5-10-100-n ячеек, взглянуть на итоговый результат их работы. По другому хранить проекты, запускать по ним скрипты будет еще неудобнее. В Access лезть пока не хочу=) Поэтому мне нужен быстрый и удобный способ прыгать между листами.
Цитата
С.М. написал: Что бы нажать одновременно CTRL+ALT+W всё равно придётся отпустить замученную работой мышу. Дайте ей отдохнуть !
Кто вам сказал? Хоткей под левой рукой нажимается идеально, правая управляет мышой. На "чистый" Alt повесить не могу, т.к. "панель быстрого доступа" и так давно занята.
JeyCi написал: перехватом сообщений WM_MOUSEWHEEL ... (в общем и целом)
Спасибо, конечно, но в стартовом топике я именно про это и писал, удивляясь, что когда в ListBox появляется скролл-бар, он не работает, и решения, что я нашел — перехватывать колесо мыши с кучей глюков. Собсна, мой вопрос то был: какого фига так сложно, может есть проще способ, который я не выгуглил?
Цитата
Jungl написал: Вариант с webbrowser. К сожалению мне не удалось после вызова формы установить фокус на браузере, чтобы можно было сразу скроллить, а не кликать мышкой на селекты. Может кто подскажет.
быстрый переход на лист(web).xlsm (65.2 КБ)
Прикольная реализация, но отсутствие фокуса на старте, конечно, непонятно. А такую форму можно сделать динамически расширяемой по высоте в зависимости от числа строк?
По просьбе модераторов -- один вопрос, одна тема. Где вы увидели дубликат? Здесь речь о стандартном окошке выбора листов, на который хочу хоткей и вызов в центр монитора.
В соседних темах — самописный макрос для той же задачи, т.к. стандартными средствами не знаю как это сделать.
zamboga написал: А если листы без номеров, а имеют текстовые имена?
Цитата
Мотя написал: Это не имеет никакого значения - проверьте!
Это я к тому, что если есть цифровой индекс — то искать нужный лист — легче.
Цитата
Мотя написал: С переходами с листа на лист - проблематично...
Вот именно поэтому я и написал то, что в первом посте=)
Цитата
Karataev написал: Если только для себя, то попробуйте ListView
Поизучал. Решил, что мне все-таки лень его сейчас внедрять.
Обнаружил, что если в диалоговом окне в форме ListBox зажать ЛЕВУЮ кнопку мыши и НЕ ОТПУСКАТЬ её, то можно скроллировать список, просто двигая саму мышку вверх и вниз.
Мотя, это и так у меня есть, первый лист в моем рабочем файле в рабочем файле и есть лист с индексами. Оглавление листов сделать не сложно=)
Когда листов овердофига, то скажите мне, как мне быстро перейти, например, с листа 40 на лист 80? А если листы без номеров, а имеют текстовые имена? Ваш сценарий: 1. найти лист 1 в длинном горизонтальном списке листов (или мышкой идти в левый нижний угол, и выбирать там через ПКМ. Но там я сразу выберу нужный лист). 2. перейти на этот лист 3. перейти с него на нужный лист.
Мой сценарий: 1. Хоткей со списком листов 2. Сразу переход на нужный.
Есть стандартный список всех листов, который вызывается ПКМ в левом нижнем углу. На большом мониторе прыгать мышкой туда-сюда постоянно не очень удобно. Что побудило меня написать простенький скрипт, который вызывает список листов для быстрого перехода к нужному. Но и там не все хорошо, т.к. есть проблема со скроллом, и проблема с автоматическим ресайзом формы.
Может быть, я зря изобретаю велосипед, и все проще?
Как вызывать это стандартное окно с листами горячей клавишей? Как сделать так, чтобы это окно вызывалось в центр рабочей области?
Excel 2016. У меня файл с кучей листов. Делаю удобный переход между ними (да, я знаю что можно нажать ПКМ в левом нижнем углу самого Excel, где стрелки перехода между листами, но туда надо тянуться мышкой, что не очень удобно на большом мониторе).
Список листов вызывается сочетанием CTRL + ALT + W Переход на нужный лист — двойной щелчок на нужном листе или кнопкой.
Вопрос. Как сделать, чтобы работал скролл мышкой в Listbox? Яндекс с гуглом предлагают страшные решения по перехвату мышиного колесика с глюками и без гарантии нормальной работы. Неужели так все плохо? Ведь если скролл-бар автоматом появляется, по логике, сам скролл мышкой должен работать. Может опция какая-то специфическая есть у ListBox, которую я не выгуглил?
Excel 2016. У меня файл с кучей листов. Делаю удобный переход между ними (да, я знаю что можно нажать ПКМ в левом нижнем углу самого Excel, где стрелки перехода между листами, но туда надо тянуться мышкой, что не очень удобно на большом мониторе).
Список листов вызывается сочетанием CTRL + ALT + W Переход на нужный лист — двойной щелчок на нужном листе или кнопкой.
Вопрос. Можно ли сделать, чтобы размер Listbox'a (и размер самой формы) автоматически менялся в зависимости от числа элементов в ней?
Проблема в том, что Excel не видит файл по указанному вами пути. Проверяйте синтаксис пути, синтаксис имени файла, синтаксис имени листа.
Код
=ГИПЕРССЫЛКА("[d:\папка с пробелами\файл с пробелами.xlsx]'Имя листа с пробелами'!"&АДРЕС(41;3);"Имя ссылки")
Путь + имя файла + имя листа обрамляется двойными кавычками " " путь + имя файла обрамляется квадратными скобками [ ] Имя листа обрамляется одинарными кавычками, апострофами ' ' После имени листа еще и добавляется восклицательный знак.
Задаю массив. Для простоты кода переменные заменены на абсолютные значения.
Код
arr = Range(Cells(1, 1), Cells(10, 10)).Value
Я работаю с текстом, и мне нужно чтобы в массив попадали значения без лишних пробелов, которые могут быть в конце слов.
Как прикрутить функцию Application.Trim("ячейка") к массиву, чтобы в него попадали уже обработанные данные, без лишних пробелов? Только циклом или есть синтаксис для этого?
Для "пришельцев" с поисковых систем. Пауза для скрипта VBA с возможностью продолжения. Во вложении итоговый код (скрипт) на VBA, который решает задачу:
Поставить скрипт на паузу, показать окно продолжения (НЕ модальное)
Пользователь может сделать любые действия в Excel, не прерывая сам скрипт
Продолжить скрипт по нажатию "Ок" / прервать скрипт по нажатию на "Выход" или "крестик"
heso, нет, так как как раз, пока форма Visible, я через DoEvents могу выполнять любые действия в книге, так как окно UserForm1 НЕ модальное.
Казанский, я понял ошибку с "глобальностью", и спасибо за "выход"! Хочется еще, чтобы при нажатии на "крестик" так же была остановка скрипта. Сейчас же поведение такое, как будто я просто скрываю форму. Никто не знает, можно ли как-то перехватывать нажатие на "крестик"?
Как вариант, можно попробовать сделать наоборот, делать "выход" по условию "UserForm1 = invisible, но тогда как мне реализовать по-другому задачу "поставить скрипт на паузу, сделать действия в книге, продолжить скрипт"?
Для "пришельцев" с поисковых систем. Пауза для скрипта VBA с возможностью продолжения. Вложение "Пауза для скрипта с возможностью продолжения.xlsm"
Во вложении итоговый код (скрипт) на VBA, который решает задачу:
Поставить скрипт на паузу, показать окно продолжения (НЕ модальное)
Пользователь может сделать любые действия в Excel, не прерывая сам скрипт
Продолжить скрипт по нажатию "Ок" / прервать скрипт по нажатию на "Выход" или "крестик"
Первоначальный вопрос. Вложение "Выход.xlsm" с ошибкой, прерывание скрипта еще не реализовано.
Скрытый текст
Есть большой скрипт. В определенный момент мне надо выбрать 1-n-все листы в книге для дальнейшей работы. Все работает так, как мне надо — пока висит диалоговое окно, я могу выполнять любые действия в рабочей книге, в том числе и выделять листы.
Не могу реализовать выход=) "Крестик" убирает форму, не прерывая скрипт. Тогда попробовал сделать кнопку "Выход", повесив на нее "Exit Sub"
Exit Sub срабатывает в другой процедуре Sub CommandButton3_Click(), и, конечно, не делает "Выход" из основного скрипта. Пробовал передавать "флаг" — тоже не срабатывает, хотя переменная TheEnd объявлена глобально.
В чем ошибка? Как сделать, чтобы Exit Sub срабатывал при нажатии "Выход" и при нажатии на "крестик" в правом верхнем углу? Или как еще можно полностью остановить скрипт нажатием на кнопку "выход" или на "крестик"?
zamboga написал: Справка — это первое, что я пытаюсь использовать. Но по непонятной причине она у меня пропала: http://prntscr.com/dguwcg , поэтому приходится гуглить каждую проблему.
Все, что я пока нашел в сети, носит разрозненный характер, и я не думал, что объектов так много, поэтому и попросил его список с полным описанием.
Я в свое время нагуглил и изучил такие объекты, как [Application, Workbooks, Workbook, Sheets, Worksheets, Worksheet, Rows, Columns, Range]. Но подозревал, что объектов больше, чем этот список, т.к. как минимум, я еще знаю ActiveWorkbook, ActiveSheet, ActiveWindow. Кроме того, для многих функций и объектов в VBA после их написания и установки "точки" выводится список их свойств и методов (.Count, .Select и т.д.)
Я не всегда понимаю разницу между, например, Worksheets и Sheets, Worksheet и Sheet, поэтому приходится каждый раз гуглить. В общем, мне пока очень не хватает справочника по базовым объектам/функциям и их синтаксису.
Справка — это первое, что я пытаюсь использовать. Но по непонятной причине она у меня пропала: http://prntscr.com/dguwcg , поэтому приходится гуглить каждую проблему. Приведенный вами пример мне не совсем подходит (вернее, не подходит), т.к. у меня нет задачи запустить скрипт только на одном, заранее определенном листе. Мне надо запускать скрипт на разных Листах в разных Книгах (в том числе сгенерированных другими скриптами), и комбинации Листов каждый раз могут быть разные.
Цитата
The_Prist написал:For Each sh In ActiveWindow.SelectedSheets
спасибо, опять выручили! То, что нужно.
А нет у кого-нибудь ссылки со списком всех Объектов + их Свойства и Методы? Пока всё, что я нагуглил — там не было свойства "SelectedSheets".