Excel гиперссылка запуск макроса

Макрокод может быть очень полезным для нас при решении некоторых сложных задач в Excel, обычно мы можем выполнить его в Microsoft Visual Basic для приложений окно, нажав Run или нажатие F5 ключ. Но пробовали ли вы когда-нибудь запускать макросы, щелкая относительные гиперссылки на листе?

Запустите или выполните макрос, щелкнув гиперссылку с кодом VBA


стрелка синий правый пузырь Запустите или выполните макрос, щелкнув гиперссылку с кодом VBA

Нам может быть интересно запустить макрос, щелкнув гиперссылку в Excel, следующий метод может помочь вам выполнить эту задачу шаг за шагом:

1. Создайте гиперссылки, которые вы хотите использовать для выполнения кодов макросов. Щелкните ячейку и создайте гиперссылку для ссылки на себя, см. Снимок экрана:

макрос запуска документа из гиперссылки 1

2. Повторите вышеуказанный шаг, чтобы создать другие гиперссылки, которые вы хотите использовать, как показано на следующем снимке экрана:

макрос запуска документа из гиперссылки 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

макрос запуска документа из гиперссылки 3

Внимание: В приведенном выше коде B6 и B8 содержат ли ячейки гиперссылки, которые вы хотите использовать, и Macro1 и Macro2 являются кодовыми названиями макросов, измените их по своему усмотрению.

4. Затем сохраните и закройте окно кода, с этого момента, когда вы щелкаете гиперссылку, конкретный код макроса будет выполняться сразу.


Статьи по теме:

Как запустить макрос при изменении значения ячейки в Excel?

Как запустить макрос на основе значения ячейки в Excel?

Как запустить макрос на основе значения, выбранного из раскрывающегося списка в Excel?

Как запустить макрос автоматически перед печатью в Excel?

Как запустить макрос, когда лист выбран из книги?


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (5)


Оценок пока нет. Оцените первым!

The more interesting way of hyperlink to run a macro, looks to be the next approach (Hyperlink formula). It does not need any event:

  1. Write a hyperlink formula in a cell. This can be done in VBA, too:
    Sub testCreateHyperlinkFunction()
       'Very important to have # in front of the function name!
       Range("A1:A5").Formula = "=HYPERLINK(""#MyFunctionkClick()"", ""Run a function..."")"
    End Sub

A more spectacular use will be the next approach, able to keep the initial cells value of the processed range («A1:A5» in example):

Sub testCreateHyperlinkFunctionBis()
  Dim rng As Range, arr As Variant, c As Range, i As Long
   Set rng = Range("A1:A5")
   arr = rng.Value
   For i = 1 To UBound(arr, 1)
     Range("A" & i).Formula = "=HYPERLINK(""#MyFunctionkClick()"", " & _
            IIf(IsNumeric(arr(i, 1)), arr(i, 1), """" & arr(i, 1) & """") & ")"
   Next i
End Sub
  1. Create the function to be called (in a module):
    Function MyFunctionkClick()
      Set MyFunctionkClick = Selection 'This is required for the link to work properly
      MsgBox "The clicked cell addres is " & Selection.row
    End Function

Do note the Set MyFunctionkClick = Selection line really is needed. The function needs to know, somehow, to what cell the code is referring. If this is missing, the function is called twice and you get a «Reference is invalid» error.

  1. Clicking the cell, the function MyFunctionkClick() runs…

Создание гиперссылки в VBA Excel методом Hyperlinks.Add для перехода на другой лист, на интернет-сайт, для открытия любого файла в программе по умолчанию.

Hyperlinks.Add — это метод, который добавляет новую гиперссылку к указанному объекту Range (диапазону, ячейке) или объекту Shape (фигуре).

Синтаксис

Expression.Add (Anchor, Address, SubAddress, ScreenTip, TextToDisplay)

Expression — выражение (переменная), возвращающее объект Hyperlinks.

Параметры

Параметр Описание
Anchor Объект Range или объект Shape, к которому привязывается (добавляется) новая гиперссылка. Обязательный параметр. Тип данных — Object.
Address Адрес гиперссылки. Обязательный параметр. Тип данных — String.
SubAddress Субадрес гиперссылки. Необязательный параметр. Тип данных — Variant.
ScreenTip Всплывающая подсказка, отображаемая при наведении указателя мыши на текст гиперссылки. Необязательный параметр. Тип данных — Variant.
TextToDisplay Текст гиперссылки. Необязательный параметр. Тип данных — Variant.

Если текст гиперссылки (TextToDisplay) не указан, будет отображен текст параметров Address и SubAddress.

Создание гиперссылки на рабочий лист другой книги:

ActiveSheet.Hyperlinks.Add Anchor:=Range(«A4»), Address:=«C:UsersEvgeniyDesktopКнига2.xlsx», _

    SubAddress:=«Лист3!D5», ScreenTip:=«Гиперссылка на Лист3!D5 в Книга2», TextToDisplay:=«Книга2 — Лист3!D5»

Создание гиперссылки на другой лист текущей книги:

ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=«», _

    SubAddress:=«Лист4!D6», TextToDisplay:=«Эта книга — Лист4!D6»

Создание гиперссылки на другую ячейку того же листа:

Worksheets(«Лист1»).Hyperlinks.Add Anchor:=Range(«A1»), Address:=«», _

    SubAddress:=«Лист1!D6», TextToDisplay:=«Перейти к D6»

Создание гиперссылки на документ Word:

ActiveSheet.Hyperlinks.Add Anchor:=Range(«A1»), Address:=«C:UsersEvgeniyDocumentsДокумент 1.docx», _

    TextToDisplay:=«Ссылка на Документ 1»

Создание гиперссылки на точечный рисунок:

ActiveSheet.Hyperlinks.Add Anchor:=Range(«A1»), Address:=«C:UsersEvgeniyDocumentsРисунок 1.bmp», _

    TextToDisplay:=«Ссылка на Рисунок 1»

Пример добавления гиперссылки на рубрику «VBA Excel» сайта «Время не ждёт»:

ActiveSheet.Hyperlinks.Add Anchor:=Range(«A1»), Address:=«https://vremya-ne-zhdet.ru/category/vba-excel/», _

    TextToDisplay:=«Рубрика VBA Excel»

Поиск первой ячейки с гиперссылкой в заданном диапазоне:

Sub Primer()

Dim myRange As Range, n As Integer, i As Integer, s As String

‘Задаем диапазон поиска

Set myRange = Range(«A1:G10»)

‘Вычисляем количество ячеек в заданном диапазоне

n = myRange.Cells.Count

‘Ищем первую ячейку с гиперссылкой

    For i = 1 To n

        If myRange.Cells(i).Hyperlinks.Count > 0 Then

            s = myRange.Cells(i).Address

            Exit For

        End If

    Next

MsgBox s

End Sub

Для поиска последней ячейки с гиперссылкой в заданном диапазоне следует заменить строку
For i = 1 To n
на
For i = n To 1 Step -1.


 

dimoor

Пользователь

Сообщений: 29
Регистрация: 01.01.1970

С праздником мужики!  
Есть такой вопрос, можно ли гиперссылкой в ячейке запускать макрос, и как её создать?

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

Может быть так? Ведь когда Вы кликаете по гиперссылке, то волей-неволей выделяется ячейка с этой гиперссылкой.

 

dimoor

Пользователь

Сообщений: 29
Регистрация: 01.01.1970

Юрий М спасибо.  
Проблема в том, что я использую в ячейке выпад.список (Данные — Проверка…) и если этот список имеет более 8 строк появляется скролл, который к тому же не крутится колёсиком мыши. Приходится двигать его ЛКМ. Теряется время и снижается комфорт :) Вот я и подумал, что если вместо выпад.списка разместить кнопку, которая (макросом)делает видимым скрытый лист, на котором формируется список в виде гиперссылок. Кликаешь по нужному элементу, происходит некое действо и скрытый лист опять становится невидимым. Так что предложенный Вами вариант вполне подходит для данной задачи. Тут в принципе гиперссылка и не к чему. Все происходит при активации ячейки с необходимой записью.  
Ещё как вариант решения данного вопроса, прикидывал, возможность создания динамически изменяющейся UserForm с кнопками (вместо скрытого листа). Предыдущий вариант конечно вполне подходит да и наверное проще, но интересно, можно ли с помощью VBA создавать динамически изменяющуюся UserForm.  
Например, как-то циклом задавать количество создаваемых кнопок на форме.

 

слэн

Пользователь

Сообщений: 5192
Регистрация: 16.01.2013

обычный комбобокс, по-моему, вполне подойдет..  

  при выборе значения из списка можно что угодно запустить

 

Jom

Пользователь

Сообщений: 272
Регистрация: 08.01.2013

ИМХО лучше использовать listbox с панели «элементы управления». Пишем код нужный эвент и всё. Список можно легко делать невидимым когда он не нужен. К тому же легко менять его высоту, в зависимости от количества элементов в списке.    

  Ну или как вариант, такой же список на модальной форме.Но первый вариант удобнее.

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

Посмотрите вот такой вариант.

 

dimoor

Пользователь

Сообщений: 29
Регистрация: 01.01.1970

Спасибо всем, буду пробовать.

 

dimoor

Пользователь

Сообщений: 29
Регистрация: 01.01.1970

В продолжение темы.  
Заинтересовался предложением Jom использовать listbox с панели «элементы управления». Вроде красиво все получалось, пока не начал двигаться по листу вниз. listbox появляется вне поля видимости :(  См.вложеный файл.  
Может есть варианты решения данной проблемы?  
Спасибо.

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

Не очень понятно — сначала выбираем из ListBox, а потом в ячейке опять выпадающий список. Размеры формы в зависиомти от неких условий менять можно. И количество отображаемых кнопок тоже. Только, если следовать теме Вашего вопроса, то задача — запуск нескольких макросов. На выбор. Ведь при помощи кнопок на форме Вы тоже собираетесь запускать различные макросы. Тогде чем мой вариант Вас не устроил? Можно без скролллинга, без мышки — набрали начальные 1-2-3 буквы — вот Вам желаемый макрос. Нажали Enter — он запустился. Или это выбранное значение нужно обязательно поместить в некую ячейку? Не проблема! Уточните задачу — подумаем вместе.

 

dimoor

Пользователь

Сообщений: 29
Регистрация: 01.01.1970

Юрий М спаисбо за внимание.  
В моем примере показаны два разных НЕ СВЯЗАННЫХ варианта выбора значения, из которого всего лишь следует вывод, что при списке длинее 8 строк удобнее использовать ListBox из Элементы управления. А весь сыр бор из-за того, что в выпадающем списке не работает скрол, а посему хотелось бы заменить его на нечто более удобное. Вот я и стал думать, что лучше в такой ситуации использовать: скрытый лист со списком, который будет на время выбора отображаться, UserForm, которая будет динамически менять свои размеры (в зависимости от количества строк в списке) или как предложил Jom ListBox из Элементы управления. Мне показался ListBox самым простым, удобным и наглядным вариантом, только у него своя засада, он привязан к определенной ячейке, и если сместиться по листу вниз и вызвать его, он отображается вне зоны видимости.

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

Если вопрос стоит о возможности прокрутки, постоянного нахождения списка в поле зрения, то что мешает использовать ListBox на форме? Всегда «на виду», можно расположить в нужном месте, при увеличении списка появится скроллинг…

 

dimoor

Пользователь

Сообщений: 29
Регистрация: 01.01.1970

#12

27.02.2009 12:46:45

Юрий М    
Вы правы, пожалуй UserForm c ListBox наиболее подходящий вариант для решения проблемы со скроллиногом списка.  
Благодарю Вас.

Хитрости »

31 Январь 2013              17455 просмотров


Как сделать гиперссылку на процедуру?

В своих статьях я часто прикладываю примеры с кодами. Т.к. мой сайт ориентирован как на знающих программирование в Visual Basic for Application(VBA), так и на начинающих, я в примерах почти всегда на первом листе делаю кнопку, по нажатию которой можно сразу же перейти в редактор VBA на нужный код без каких-либо лишних телодвижений. Как-то меня уже просили разъяснить каким способом я это делаю. Вот сегодня на одном из форумов попросили в очередной раз, что и побудило меня сесть и написать эту статью. Итак, к сути.

На самом деле это не так уж и сложно. Для начала необходимо создать хоть какой-то код(макрос) внутри книги(предполагается, что это вы умеете уже. Если нет — статья в помощь). Предположим, что наш макрос расположен в модуле Module1 и называется он Макрос1. Теперь создадим кнопку для вызова этого макроса, если необходимо. А после этого создадим еще одну кнопку(я использую для этих целей автофигуры), по нажатию на которую мы и будем попадать сразу в тело нужного нам макроса.


Способ 1:
Жмем на созданной фигуре правой кнопкой мыши. Выбираем в появившемся меню Гиперссылка:
Добавить гиперссылку
Выбираем «Файлом, веб-страницей»(этот пункт открывается по умолчанию) и вписываем в поле Адрес:: #Module1.Макрос1
Создание гиперссылки
Вот и все. Наша ссылка готова.
Решетка(#) перед именем модуля указывает, что ссылка ведет на путь внутри документа. Она обязательна. После имени модуля(Module1) ставится точка, после которой указывается имя процедуры(Макрос1) или функции, на которую должна перейти гиперссылка. Никаких пробелов или иных символов быть не должно.

С прочими возможностями гиперссылок и методах из создания можно ознакомиться в статье: Что такое гиперссылка?


Способ 2:
Этот способ кажется мне более «замороченным» и не эстетичным. Я его практически не использую. Создаем еще одну процедуру(можно в отдельном модуле), в которой и прописываем переход в нужный модуль и в нужную процедуру:

Sub GoTo_Sub()
    Application.Goto "Module1.Макрос1"
End Sub

А созданной кнопке назначаем выполнение именно этого макросаGoTo_Sub. Главный недостаток этого метода в том, что придется для каждой процедуры либо создавать новую процедуру с переходом, либо действовать через всевозможные конструкции типа If...Then, Select Case, что не очень удобно. Но данный метод может быть использован и в других целях. Например, для перехода в конкретную процедуру при возникновении ошибки в другой процедуре.

Также см.:
Что такое гиперссылка?
Что такое макрос и где его искать?
Что такое модуль? Какие бывают модули?
Как создать кнопку для вызова макроса на листе?


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Like this post? Please share to your friends:
  • Excel где скачать форум
  • Excel гиперссылка есть текста нет
  • Excel гиперссылка горячая клавиша
  • Excel где правка связи
  • Excel где поменять кодировку