Макрокод может быть очень полезным для нас при решении некоторых сложных задач в Excel, обычно мы можем выполнить его в Microsoft Visual Basic для приложений окно, нажав Run или нажатие F5 ключ. Но пробовали ли вы когда-нибудь запускать макросы, щелкая относительные гиперссылки на листе?
Запустите или выполните макрос, щелкнув гиперссылку с кодом VBA
Запустите или выполните макрос, щелкнув гиперссылку с кодом VBA
Нам может быть интересно запустить макрос, щелкнув гиперссылку в Excel, следующий метод может помочь вам выполнить эту задачу шаг за шагом:
1. Создайте гиперссылки, которые вы хотите использовать для выполнения кодов макросов. Щелкните ячейку и создайте гиперссылку для ссылки на себя, см. Снимок экрана:
2. Повторите вышеуказанный шаг, чтобы создать другие гиперссылки, которые вы хотите использовать, как показано на следующем снимке экрана:
3. Затем щелкните правой кнопкой мыши вкладку листа, содержащую гиперссылки, которые вы хотите использовать, и выберите Просмотреть код из контекстного меню, а в открывшемся Microsoft Visual Basic для приложений окна, скопируйте и вставьте следующий код в пустой модуль:
Код VBA: запускать коды макросов из гиперссылок:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
If Target.Range.Address = "$B$6" Then
Call Macro1
End If
If Target.Range.Address = "$B$8" Then
Call Macro2
End If
End Sub
Внимание: В приведенном выше коде B6 и B8 содержат ли ячейки гиперссылки, которые вы хотите использовать, и Macro1 и Macro2 являются кодовыми названиями макросов, измените их по своему усмотрению.
4. Затем сохраните и закройте окно кода, с этого момента, когда вы щелкаете гиперссылку, конкретный код макроса будет выполняться сразу.
Статьи по теме:
Как запустить макрос при изменении значения ячейки в Excel?
Как запустить макрос на основе значения ячейки в Excel?
Как запустить макрос на основе значения, выбранного из раскрывающегося списка в Excel?
Как запустить макрос автоматически перед печатью в Excel?
Как запустить макрос, когда лист выбран из книги?
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Комментарии (5)
Оценок пока нет. Оцените первым!
karych35 Пользователь Сообщений: 14 |
Всем доброго дня! |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
Включите макрорекордер и нажмите на эту гиперссылку. Затем остановите запись — макрос готов. |
karych35 Пользователь Сообщений: 14 |
Макрос записался ‘ |
Niff-Nif Пользователь Сообщений: 16 |
|
karych35 Пользователь Сообщений: 14 |
не знаю! сделал как написал Юрий, вот что получилось.. |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
#6 04.06.2013 11:32:47 Запишите не активацию ячейки, а именно клик по гиперссылке. Рекордер запишет примерно такое:
|
||
Niff-Nif Пользователь Сообщений: 16 |
Должно быть еще: Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True |
ber$erk Пользователь Сообщений: 2735 |
Не то вы нажимали. Range(«N1»).Hyperlinks(1).Follow Учимся сами и помогаем другим… |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
#9 04.06.2013 11:34:29
Неправда — я не так советовал — перечитайте моё сообщение:
|
||||
karych35 Пользователь Сообщений: 14 |
Я нажимаю на запись макроса, далее перехожу на второй лист и жму на гиперссылку (синий шрифт), далее нажимаю остановку записи и привязываю кнопку! Почему в коде не прописывает все остальное я не знаю! Я не активирую ячейку а жму именно на ссылку.. пишет ошибку run-time error ‘9’ |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
Покажите ЦЕЛИКОМ код, записанный рекордером — я не вижу перехода на второй лист. |
karych35 Пользователь Сообщений: 14 |
Sub Макрос1() ‘ |
karych35 Пользователь Сообщений: 14 |
|
karych35 Пользователь Сообщений: 14 |
может это из-за «мудренной» формулы в гиперссылке (=ГИПЕРССЫЛКА(ВПР(Лист1!E1;Лист2!1:1048576;2;ЛОЖЬ))? |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
#15 04.06.2013 11:55:29 Не знаю, что у Вас там в этой ячейке… Обработанный напильником код у меня работает и выглядит так:
У меня в А14 точно гиперссылка на файл. |
||
karych35 Пользователь Сообщений: 14 |
Юрий, и у меня ссылка, я ведь ее мышкой нажимаю, все открывается… а вот через кнопку не работает! жаль! Но все равно спасибо за оперативную помощь!!! |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
#17 04.06.2013 12:02:16
А у меня в ячейке именно ГИПЕРССЫЛКА, а не формула. |
||
karych35 Пользователь Сообщений: 14 |
да сейчас попробовал «чистую» гиперссылку (не формулу) все работает! а гиперссылку с формулой как запустить через кнопку? можно или нет? |
ber$erk Пользователь Сообщений: 2735 |
#19 04.06.2013 12:37:12 Чувствую, что так вам надо
Учимся сами и помогаем другим… |
||
Михаил С. Пользователь Сообщений: 10514 |
#20 04.06.2013 12:51:39
Вероятно Excel 2007. В нем макрорекордер «урезанный» |
||
ber$erk Пользователь Сообщений: 2735 |
Михаил С., мои тесты показали: Именно поэтому я и предложил забить на кнопку код, выложенный выше Учимся сами и помогаем другим… |
karych35 Пользователь Сообщений: 14 |
#22 04.06.2013 14:03:06 Всем спасибо за участие! Вот что я сделал: |
orange3100 3 / 3 / 0 Регистрация: 16.10.2014 Сообщений: 148 |
||||||||||
1 |
||||||||||
Excel Вызов процедуры через нажатие на Гиперссылку с передачей параметра30.06.2018, 13:22. Показов 3748. Ответов 1 Метки нет (Все метки)
Доброго времени суток уважаемые форумчане. Подскажите пожалуйста, каким образом можно вызывать процедуру по нажатию на гиперссылку в ячейке Эксель с передачей параметра в эту процедуру из другой ячейки? Имеем простой набор:
Нажимая на гиперссылки в столбце «ссылки» происходит вызов простейшей процедуры:
Не знаю как сделать так, чтобы значение A1 менялось на текущее положение Activecell, ну и непосредственно сам запуск процедуры… Вложения
0 |
Казанский 15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||||||||
01.07.2018, 12:54 |
2 |
|||||||
orange3100, а что за суровая необходимость вызывать процедуру через нажатие на Гиперссылку, которая никуда не ведет? двойным кликом по ячейке например в ст. В, для этого в модуль ЛИСТА
Если все же хочется через гиперссылку. Функция ГИПЕРССЫЛКА не вызывает события, для которого можно было бы написать обработчик на VBA. Если создать гиперссылку с помощью Ctrl+K, и чтобы она вела к этой же ячейке, можно обработать событие перехода по гиперссылке. В модуль ЛИСТА
0 |
Вставленные в таблицу Excel ссылки не всегда становятся активными, из-за чего переход по ним в одно нажатие попросту невозможен. В таких случаях ссылку необходимо активировать, чтобы дальнейшее взаимодействие с ней было более удобным. Для этого есть разные способы, каждый из которых подойдет в определенных ситуациях.
Вариант 1: Вставка ссылки из браузера
Excel работает таким образом, что при копировании ссылки из адресной строки веб-обозревателя она сразу же становится активной. Используйте этот метод, если нужно вставить новые строки в таблицу, а не редактировать уже существующие. Найдите требуемую страницу в браузере и скопируйте ее, выделив и используя комбинацию клавиш Ctrl + C.
Перейдите в Microsoft Excel, после чего вставьте ссылку в подходящую ячейку, подогнав ее по размеру. Выберите любую другую клетку для редактирования, чтобы заметить, как применяется изменение к этой. Теперь вы можете нажать ЛКМ по ссылке, чтобы сразу открыть ее в браузере по умолчанию.
Прочитайте текст на всплывающей подсказке, появляющейся при наведении курсора на саму ссылку: в ней есть информация о том, что переход происходит при одинарном нажатии, а для выделения необходимо кликнуть и удерживать кнопку мыши. Это поможет разобраться с редактированием, если ранее вы с ним не работали.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться
Вариант 2: Самостоятельная активация ссылки
Разберу вариант, когда ссылка уже вставлена в таблицу, но не является активной. Этот же метод подойдет в тех случаях, когда нужно сделать слово или надпись с адресом в виде ссылки, по которой и будет осуществлен переход при нажатии.
-
Выделите ячейку со ссылкой или надписью, после чего нажмите по ней ПКМ.
-
Из появившегося контекстного меню выберите пункт «Ссылка», открыв соответствующее окно с настройками.
-
Если сейчас ссылка представлена в поле «Текст», ее необходимо скопировать и перенести в поле «Адрес».
-
Вместо ссылки в поле «Текст» вы можете вписать любую надпись, нажатие по которой отвечает за переход по ссылке, вставленной в поле «Адрес».
-
Примените изменения и вернитесь к таблице. На следующем скриншоте вы видите результат активации ссылки с заменой ее текста на более уместный.
Думаю, принцип использования окна «Ссылка» вам понятен, и проблем с переименованием возникнуть не должно. Используйте такой метод, когда нужно заменить громоздкую ссылку на лаконичную надпись, которая не будет нарушать внешний вид таблицы, но при этом останется функционально полезной.
Вариант 3: Использование макроса
Последний вариант самый необычный и подходит в редких случаях. Чаще всего он применим, когда в таблице уже есть перечень ссылок, находящихся в рамках одного столбца, но при этом они неактивны. Активировать каждую при помощи представленных выше инструкций можно, но это займет много времени. Проще сделать это при помощи специального макроса.
-
Для начала через главное окно перейдите в меню «Параметры».
-
Выберите раздел «Настроить ленту» и поставьте галочку возле основной вкладки «Разработчик». Так вы обеспечите ее отображение в верхней панели программы, что нам сейчас и пригодится.
-
Примените изменения, вернитесь к таблице, перейдите на соответствующую вкладку и запустите оснастку «Visual Basic».
-
Дважды щелкните по файлу книги, чтобы справа отобразилось окно редактирования кода.
-
Вставьте туда оставленный ниже код, заменив значения «a2» на номер ячейки, с которой начинается активация ссылок, а «а» – на букву столбца.
Sub HyperSsylka() Dim cell As Range, ra As Range: Application.ScreenUpdating = False Set ra = Range([a2], Range("a" & Rows.Count).End(xlUp)) For Each cell In ra.Cells If Len(cell) Then cell.Hyperlinks.Add cell, cell Next cell End Sub Sub HyperSsylkaSelect() Dim cell As Range: Application.ScreenUpdating = False For Each cell In Selection If Len(cell) Then cell.Hyperlinks.Add cell, cell Next cell End Sub
Строку для редактирования вы видите на следующем изображении.
-
Сохраните результат, нажав по соответствующей кнопке на панели сверху или используя сочетание клавиш Ctrl + S.
-
Закройте редактор кода и запустите окно «Макрос». Дважды щелкните по строке с созданным макросом для активации ссылок.
-
Все изменения выполняются автоматически, а далее вам остается только убедиться в том, что вместо обычного текста появились активные ссылки, переход по которым возможен (если в их содержимом действительно находится веб-адрес).
Все перечисленные варианты работают в любых ситуациях, а выбор зависит исключительно от того, с какой задачей столкнулись лично вы. Конечно, для активации одной ссылки не захочется создавать макрос, а вот для массовой обработки он окажется как никогда кстати.
Кнопка в Excel как ссылка на ячейку, какой-либо инструмент, созданный макрос значительно упрощает работу в программе. Чаще всего это графический объект с назначенным макросом или гиперссылкой. Рассмотрим, как сделать такую кнопку.
Как сделать кнопку на листе Excel
Суть работы: создать графический объект и назначить для него макрос или гиперссылку. Рассмотрим подробнее.
Способы создания графического объекта:
- Кнопка – элемент ActiveX. Переходим на вкладку «Разработчик». Нажимаем кнопку «Вставить». Открывается меню с набором элементов для вставки. Выбираем первый элемент ActiveX – «кнопку» (в виде серого кирпичика). Теперь рисуем курсором кнопку необходимого размера.
- Кнопка – элемент управления формы. Снова переходим на вкладку «Разработчик». Открываем меню инструмента «Вставить». Теперь выбираем элемент «кнопка» из первой группы (такой же серый кирпичик). Рисуем кнопку. Сразу открывается окно для назначения макроса: можно сделать сразу, а можно попозже.
- Кнопка – автофигура. Переходим на вкладку «Вставка». В меню «Иллюстрации» выбираем подходящую фигуру. Рисуем. По готовой фигуре можно щелкнуть правой кнопкой мыши и изменить оформление.
- Кнопка – рисунок. Переходим на вкладку «Вставка». В меню «Иллюстрации» выбираем инструмент «Рисунок». Для выбора будут предложены варианты, которые имеются на компьютере.
Графический объект создан. Теперь нужно сделать его «рабочим».
Как в Excel сделать кнопку с макросом
К примеру, написали макрос для выполнения определенной задачи. Чтобы запускать его, нужно каждый раз заходить в меню «Разработчик». Что неудобно. Гораздо проще создать «рабочую» кнопку.
Если мы использовали элемент ActiveX, то:
Для других графических объектов макрос назначается так же. Процедура еще проще. Нужно щелкнуть правой кнопкой мыши по нарисованной кнопке или картинке и выбрать инструмент «Назначить макрос».
Другие варианты использования кнопок
С помощью кнопок в Excel можно не только выполнять созданные макросы, но и переходить в определенную ячейку, другой документ, на другой лист. Рассмотрим подробнее.
Нарисуем графический объект и выделим его. На вкладке «Вставка» найдем кнопку «Гиперссылка».
После нажатия открывается окно для создания связи кнопки с файлом, веб-страницей, электронной почтой, новым документом, местом в текущем документе.
Достаточно выбрать необходимый вариант и прописать к нему путь. Этот способ не требует написания макросов и предоставляет пользователю широкие возможности.
Подобные задачи можно выполнять и с помощью макросов. Например, чтобы при нажатии, пользователь попадал в определенную ячейку (М6), прописываем следующий код:
Sub Макрос 1()
Range(«M6»).Select
End Sub
Точно так же можно назначить макрос диаграмме, объектам WordArt, SmartAtr.
Как сделать кнопку сортировки в Excel для таблиц
Для показательного примера создайте тестовую таблицу как на рисунке:
- Вместо заголовков колонки таблицы добавим автофигуры, которые будут служить кнопками для сортировки по столбцам таблицы.
- В режиме Visual Basic — ALT+F11 в папке Modules вставляем новый модуль Module1. Для этого делаем по папке правый щелчок мышкой и выбираем: Insert-Module.
- Делаем двойной щелчок по Module1 и вводим в него следующий код:
- Назначаем каждой автофигуре свой макрос: для «Наименование» – Макрос1, а для «Май» – Макрос2 и т.д.
Sub Макрос1()
ActiveWorkbook.Worksheets(«Лист1»).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(«Лист1»).Sort.SortFields.Add Key:=Range(«A2:A6«), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(«Лист1»).Sort
.SetRange Range(«A2:D6»)
.Apply
End With
End Sub
‘————————————————
Sub Макрос2()
ActiveWorkbook.Worksheets(«Лист1»).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(«Лист1»).Sort.SortFields.Add Key:=Range(«B2:B6«), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(«Лист1»).Sort
.SetRange Range(«A2:D6»)
.Apply
End With
End Sub
‘————————————————
Sub Макрос3(
)
ActiveWorkbook.Worksheets(«Лист1»).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(«Лист1»).Sort.SortFields.Add Key:=Range(«C2:C6«), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(«Лист1»).Sort
.SetRange Range(«A2:D6»)
.Apply
End With
End Sub
‘————————————————
Sub Макрос4()
ActiveWorkbook.Worksheets(«Лист1»).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(«Лист1»).Sort.SortFields.Add Key:=Range(«D2:D6«), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(«Лист1»).Sort
.SetRange Range(«A2:D6»)
.Apply
End With
End Sub
Примечание. Красным текстом отмечены отличающиеся параметры для каждого столбца.
Все теперь достаточно только кликнуть по заголовку и таблица отсортирует данные относительно определенного столбца. Для удобства столбец «Наименование» Макрос1 сортирует по возрастанию благодаря параметру Order:=xlAscending. Во всех остальных столбцах присвоены макросы (2,3,4) с параметром Order:=xlDescending, который задает тип сортировки по убыванию. Чтобы видно было, в каком месяце было больше продано товара.
Скачать пример кнопки сортировки
Примечание. Такие простые макросы можно создать в автоматическом режиме без программирования или без написания VBA-кода, с помощью инструмента «Запись макроса».