Копирование гиперссылки в excel vba

Обновлено: 04.07.2024

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

Есть ли способ запустить макрос vba, щелкнув гиперссылку и узнав строку ячейки, которая щелкнула гиперссылку?

Это сработает для вас

Я думаю, что вместо того, чтобы создавать гиперссылку для каждой ячейки, лучше создать макрос, который ссылается на свойство Activecell . Затем создайте сочетание клавиш для запуска макроса. Для этого:

  1. Нажмите ALT + F8
  2. Выберите Options
  3. Выберите клавишу, которая будет сочетанием клавиш

Если у вас уже есть гиперссылки, лучше всего запустить макрос с помощью события Hyperlink_Follow . Если нет, то учтите мою рекомендацию.

На листе, на котором вы хотите выполнить двойной щелчок, используйте это:

А затем в Module1 есть процедура, которая будет обрабатывать активную ячейку:

Вы также должны отключить метод двойного щелчка в Excel в событиях книги:

Я считаю, что метод двойного щелчка действительно очень удобен и интуитивно понятен для многих процессов, например. создание UserForm с данными, заполненными из строки, или перенос этих данных на другой лист, возможно, с помощью вычислений или форматирования и т. д.

Более интересный способ запуска макроса с помощью гиперссылки, похоже, будет следующим подходом (формула гиперссылки). Не нужно никаких событий:

  1. Напишите формулу гиперссылки в ячейку. Это можно сделать и в VBA:

Более эффектным будет следующий подход, способный сохранить начальное значение ячеек обрабатываемого диапазона (например, "A1: A5"):

  1. Создайте функцию для вызова (в модуле):
  1. При нажатии на ячейку запускается функция MyFunctionkClick() .

Да, вы можете, для этого выполните следующие простые шаги:

  1. Выберите ячейку, в которой вы хотите сделать гиперссылку
  2. Щелкните правой кнопкой мыши -> Гиперссылка
  3. Введите адрес той же ячейки, в которой вы создаете гиперссылку, и дайте имя ссылке. См. Картинку ниже:

Назначить макрос гиперссылке

Примечание: щелчок по этой гиперссылке ничего не сделает, потому что она назначена тому же адресу ячейки.

  1. Теперь нажмите Alt + F11
  2. Скопируйте и вставьте приведенный ниже код

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

В приведенном выше коде мы сравниваем адрес ячейки, а затем выполняем набор кода или функции. Есть и другой способ сделать это. Мы можем сравнить с целевым именем и выполнить код. В приведенном выше примере я дал имя цели гиперссылки как MyMacro.

Это простая, но весьма полезная функция, позволяющая создать живую ссылку на:

  • любую ячейку на любом листе в книге
  • именованный диапазон
  • фрагмент умной таблицы
  • внешний файл Excel на диске или на сервере в сети
  • веб-страницу

Кроме того, эта функция умеет создавать заполненную форму письма email, что сильно помогает при рассылке типовых оповещений.

Синтаксис функции прост:

=ГИПЕРССЫЛКА( Адрес ; Текст )

  • Текст - это видимый текст гиперссылки в ячейке (обычно выделенный синим цветом и подчеркиванием, как все гиперссылки), по которому щелкает пользователь. Может быть любым, это роли не играет.
  • Адрес - место, куда мы хотим сослаться (и это самое интересное).

Давайте рассмотрим все варианты подробнее.

Ссылка на веб-страницу

Это самый простой и очевидный вариант применения нашей функции ГИПЕРССЫЛКА (HYPERLINK) . Первым аргументом здесь будет полная ссылка на веб-страницу (URL):

Ссылка на сайт функцией ГИПЕРССЫЛКА

Обратите внимание, что адрес должен быть полным, т.е. обязательно начинаться с протокола (обычно "http"). При щелчке по созданной ссылке заданный сайт откроется в браузере по умолчанию.

Ссылка на ячейку внутри книги

Если нужна ссылка на ячейку или диапазон, находящийся внутри текущей книги, то адрес нужно будет указать следующим образом:

Внутренняя ссылка

Если имя листа содержит пробелы, то его обязательно заключать в апострофы - иначе ссылка не сработает:

Ссылка на имя листа с пробелами

Ссылка на ячейку во внешней книге

Можно легко создать ссылку на ячейку во внешней книге. Тогда в качестве первого аргумента нужен будет полный путь к файлу (с расширением!), имя листа и адрес ячейки:

Ссылка на диапазон во внешней книге

Аналогично внутренней ссылке, если имя листа содержит пробелы, то его необходимо дополнительно заключить в апострофы.

Ссылка на файл на сервере

Также поддерживаются сетевые ссылки, если файл сохранен, например, на корпоративном сервере в общей папке - в этом случае используется путь в формате UNC, начинающийся с двух обратных дробей:

Ссылка на файл в корпоративной сети

Ссылка на именованный диапазон

Если вы создали именованный диапазон (например, через Формулы - Диспетчер имен - Создать), то можно спокойно использовать это имя в ссылке:

ГИПЕРССЫЛКА и именованный диапазон

Если нужно сослаться на именованный диапазон во внешнем файле, то потребуется уточнить его имя и путь к нему, как в предыдущем пункте. Имя листа указывать уже не нужно:

Внешняя ссылка на именованный диапазон

Ссылка на умную таблицу или ее элементы

Если вы знакомы с умными таблицами, то знаете какая это полезная штука. При желании, можно легко создать с помощью функции ГИПЕРССЫЛКА (HYPERLINK) ссылку на любой нужный нам фрагмент умной таблицы или на нее целиком. Для этого в первом аргументе нужно указать имя таблицы (например Таблица1) и кодовое обозначение ее элемента:

ГИПЕРССЫЛКА на умную таблицу

Поддерживаются следующие обозначения:

Формирование заполненной формы письма email

Это относительно экзотический вариант применения функции гиперссылка, позволяющий создавать заполненный бланк электронного письма:

Создание письма

При щелчке по такой ссылке мы увидим вот такую красоту:

Бланк письма, созданный функцией ГИПЕРССЫЛКА

Можно указывать несколько адресатов, получателей обычной и скрытой копий, форматировать текст письма и т.д. Очень удобно для служебных уведомлений и рассылок. Единственное, что нельзя таким образом сделать - прикрепить вложения. Подробнее про все возможности и параметры такого способа рассказано в отдельной статье.

Использование нестандартных символов

Иногда можно сочетать функцию ГИПЕРССЫЛКА с функцией вывода нестандартных знаков СИМВОЛ (CHAR), которую мы уже разбирали. Это позволяет заменить простой текст ссылки на что-то более симпатичное:

Имеем две таблицы на разных листах одной книги: таблицу с заказами от клиентов (на листе Заказы) и таблицу с клиентской базой (лист Клиенты). Работая с таблицей заказов, хочется иметь возможность быстро переходить на таблицу с клиентами, чтобы просмотреть подробные данные по клиенту (адрес, ФИО директора и т.д.). То есть, другими словами, хочется в таблице заказов иметь гиперссылку в каждой строке, при щелчке мышью по которой будет происходить переход на лист Клиенты, причем именно на ту строчку где упоминается данный клиент:

match-with-hyperlinks1.jpg

Что-то типа типа функции ВПР (VLOOKUP), но не ради подстановки данных, а для быстрой ссылки из одной таблицы в другую.

Шаг 1. Создаем переменную с именем листа

Для создания гиперссылок в будущем нам понадобится каждый раз прописывать имя текущего файла и имя листа Клиенты, на который пойдут ссылки. Поэтому проще один раз создать переменную в памяти Excel с нужным значением и обращаться к ней потом по мере надобности.

В Excel 2007/2010 для этого можно воспользоваться вкладкой Формулы (Formulas) и кнопкой Диспетчер имен (Name Manager) . В более старых версиях выбрать в меню Вставка - Имя - Присвоить (Insert - Name - Define) . В открывшемся окне нажмите кнопку Создать (New) и введите туда имя переменной (я назвал ее для примера Мой_Лист) и формулу в строку Диапазон (Reference) :

match-with-hyperlinks2.jpg

Разберем эту конструкцию на составляющие для понятности:

  1. ЯЧЕЙКА("имяфайла";Клиенты!$A$1) - функция, которая по адресу заданной ячейки (А1 с листа Клиенты) выдает любые нужные данные по листу и файлу. В данном случае - полный путь к текущему файлу до листа в виде D:\Рабочие документы\Договоры[Бюджет.xls]Клиенты
  2. Из этой строки нам нужна только часть с именем файла и листа (без диска и папок), поэтому мы ищем первое вхождение квадратной открывающей скобки в строку с помощью функции ПОИСК (FIND) и затем вырезаем из строки все, начиная с этого символа и до конца (256 символов) с помощью функции ПСТР (MID) .
  3. В конце, к вырезанному фрагменту с именем файла и листа приклеиваем восклицательный знак - стандартный разделитель имен листов и адресов ячеек в формулах, т.к. дальше должны будут идти адреса ячеек.

Таким образом эта формула выдает на выходе имя текущего файла в квадратных скобках с расширением с приклееным к нему именем листа и восклицательным знаком. Работу формулы легко проверить - просто введите в любую пустую ячейку =Мой_Лист и нажмите клавишу Enter.

Шаг 2. Создаем гиперссылки

Выделите пустую ячейку в строке напротив первого заказа и введите туда вот такую формулу:

match-with-hyperlinks3.jpg

= ГИПЕРССЫЛКА(Мой_Лист& АДРЕС( ПОИСКПОЗ(B2;Клиенты!$A$1:$A$7;0) ;1) ;">>")

Разберем ее на составляющие аналогичным образом:

  1. Функция ПОИСКПОЗ(B2;Клиенты!$A$1:$A$7;0) - ищет порядковый номер ячейки в диапазоне А1:А7 на листе Клиенты, где встречается название текущего клиента из B2 (последний аргумент =0 означает поиск точного совпадения, аналогично функции ВПР)
  2. Функция АДРЕС формирует адрес ячейки (в виде текстовой строки) по номеру строки и столбца, т.е. адрес ячейки с нужным клиентом, куда должна потом ссылаться гиперссылка
  3. Затем мы приклеиваем к адресу ссылку на файл и лист (переменную Мой_Лист) и используем это в качестве аргумента для функции ГИПЕРССЫЛКА (HYPERLINK) , которая, собственно, и создает нужную нам ссылку.

При желании, можно заменить внешнее представление гиперссылки с банальных символов ">>" на что-нибудь поинтереснее с помощью функции СИМВОЛ (CHAR) , которая умеет выводить нестандартные символы по их кодам:

=ГИПЕРССЫЛКА(Мой_Лист&АДРЕС(ПОИСКПОЗ(B2;Клиенты!$A$1:$A$7;0);1);СИМВОЛ(117))

Так, например, если использовать шрифт Wingdings 3 и символ с кодом 117, то можно получить вот такие симпатичные значки гиперссылок:


Подобно функции листа в Excel, мы также можем копировать данные вставки или набор значений в VBA. В обычных данных мы используем CTRL + C, чтобы скопировать выборку данных, а затем CTRL + V, чтобы вставить выбранные данные в целевую ячейку. Но то же самое в VBA делают определенные коды, которые мы узнаем в этой статье.

Как мы используем копирование и вставку в Excel VBA? Для этого сначала нам нужно активировать целевой лист или рабочую книгу, из которой мы хотим скопировать любой диапазон данных, и этот выбор копируется определенным кодом, когда этот выбор успешно скопирован, мы можем продолжить и вставить данные в целевой диапазон ячеек.

Синтаксис для копирования данных в VBA выглядит следующим образом:

Теперь синтаксис для вставки данных в другой лист или в любой другой диапазон ячеек выглядит следующим образом:

Мы используем оператор Dot (.) Для использования методов копирования и вставки в VBA.

Мы можем скопировать весь столбец и вставить его в другой столбец, а также мы также можем скопировать всю строку и вставить ее в другую строку. Мы узнаем все это в этой статье.

Примечание. Чтобы использовать VBA в Excel, убедитесь, что вкладка «Разработчик» включена из вкладки «Файл», а затем в раздел настроек параметров.

Как использовать Excel VBA Copy Paste?

Мы научимся использовать VBA Copy Paste с несколькими примерами в Excel.

Вы можете скачать этот шаблон VBA Copy Paste Excel здесь - Шаблон VBA Copy Paste Excel

VBA Copy Paste - Пример № 1

Для демонстрации у меня есть случайное значение в ячейке A1, которое я хочу скопировать и вставить в ячейку B1, используя код VBA. Посмотрите, какие данные находятся в ячейке A1, а ячейка B1 пуста.


Выполните следующие шаги, чтобы использовать Excel VBA Copy Paste:

Шаг 1: Перейдите на вкладку разработчика и нажмите на Visual Basic, чтобы открыть VB Editor.


Шаг 2: Как только редактор VB откроется, нажмите на кнопку вставки, а затем на кнопку Вставить модуль, чтобы вставить окно кода.


Шаг 3: Объявите подфункцию, чтобы начать писать код.

Код:


Шаг 4. Сначала активируйте лист, чтобы использовать свойства листа с помощью следующего кода.

Код:


Шаг 5: Скопируйте данные, которые находятся в ячейке A1, с помощью следующего кода.

Код:


Шаг 6: Теперь вставьте скопированные данные в целевую ячейку, которая является ячейкой B1, с помощью следующего кода.

Код:


Шаг 7: Запустите приведенный выше код с помощью кнопки запуска и посмотрите результат в ячейке B1.

VBA Copy Paste - Пример №2

У меня есть данные в столбце C, и я хочу скопировать все данные или значения и вставить их в столбец D, используя код VBA. Посмотрите ниже, что это за данные в столбце C, и что столбец D пуст.


Выполните следующие шаги, чтобы использовать Excel VBA Copy Paste:

Шаг 1: Перейдите на вкладку разработчика и нажмите на Visual Basic, чтобы открыть VB Editor.

Шаг 2: Нажмите на вставленный модуль, чтобы открыть окно кода,

Шаг 3: Объявите подфункцию, чтобы начать писать код.

Код:


Шаг 4. Сначала активируйте рабочий лист с помощью следующего кода.

Код:


Шаг 5: Скопируйте данные в столбце C с помощью следующего кода.

Код:


Шаг 6: Теперь, чтобы вставить данные в столбец D, используйте следующий код.

Код:


Шаг 7: Запустите следующий код с помощью кнопки запуска или нажмите F5.

Запустите код, чтобы увидеть следующий результат.

VBA Copy Paste - Пример № 3

Теперь для этого примера у меня есть целый диапазон данных в диапазоне ячеек G1: H3, и я хочу скопировать данные в диапазоне ячеек I1: J3. Посмотрите ниже на данные, которые у меня есть в диапазоне ячеек G1: H3, а диапазон ячеек I1: J3 пуст.


Выполните следующие шаги, чтобы использовать Excel VBA Copy Paste:

Шаг 1: Перейдите на вкладку разработчика и нажмите на Visual Basic, чтобы открыть VB Editor.

Шаг 2: Нажмите на вставленный модуль, чтобы открыть окно кода,

Шаг 3: Объявите подфункцию, чтобы начать писать код.

Код:


Шаг 4. Сначала активируйте лист, чтобы использовать его свойства с помощью следующего кода.

Код:


Шаг 5: Скопируйте данные в целевой диапазон ячеек с помощью следующего кода.

Код:


Шаг 6: Теперь, чтобы вставить данные в ячейку назначения, используйте следующий код.

Код:


Шаг 7: Запустите приведенный выше код с помощью кнопки запуска или нажмите F5, чтобы увидеть следующий результат.

VBA Copy Paste - пример № 4

Для этого примера у меня есть данные в строке 10, и я хочу вставить данные в строке 11. Посмотрите ниже, чтобы увидеть, какие данные находятся в строке 10, а строка 11 свободна.


Выполните следующие шаги, чтобы использовать Excel VBA Copy Paste:

Шаг 1: Перейдите на вкладку разработчика и нажмите на Visual Basic, чтобы открыть VB Editor.

Шаг 2: Нажмите на вставленный модуль, чтобы открыть окно кода,

Шаг 3: Объявите подфункцию, чтобы начать писать код.

Код:


Шаг 4. Активируйте рабочий лист, чтобы использовать свойства рабочего листа.

Код:


Шаг 5: Скопируйте строку 10 со следующим кодом.

Код:


Шаг 6: Вставьте данные строки 10 в строку 11 с помощью следующего кода.

Код:


Шаг 7: Запустите приведенный выше код, нажав F5, чтобы увидеть следующий результат.

То, что нужно запомнить

  • Чтобы использовать данные из любого листа для их копирования, нам нужно сначала активировать лист.
  • Точно так же, когда нам нужно вставить данные в любой другой лист в VBA, нам нужно сначала активировать целевой лист.
  • Если мы копируем весь столбец или строку и вставляем данные в любой другой столбец, тогда данные в любом месте строки или столбца в целевых ячейках копируются и вставляются в целевые ячейки. Это может привести к определенным нежелательным данным.
  • Лучший способ скопировать данные - скопировать определенный диапазон и вставить данные в целевые ячейки.

Рекомендуемые статьи

Это было руководство к VBA Copy Paste. Здесь мы обсудили, как использовать Excel VBA Copy paste, а также некоторые практические примеры и загружаемый шаблон Excel. Вы также можете просмотреть наши другие предлагаемые статьи -


Гиперссылка обычно используется с веб-сайтами для перехода с одной страницы на другую или с одного веб-сайта на другой в Интернете. Аналогичным образом, мы можем также контролировать движения в листе Excel. Различные операции, которые могут быть выполнены в Excel:

  • Перемещение в определенное место в текущей рабочей книге.
  • Открываем разные документы и выбираем указанную область внутри документа.
  • Переход к веб-страницам с рабочего листа.
  • Отправка электронной почты на указанный адрес.

Гиперссылка легко распознается из-за изменения цвета, в основном синего цвета. Существуют разные способы создания гиперссылки в Excel и использования VBA.

Как создать гиперссылку в Excel, используя код VBA?

Вы можете добавить гиперссылку на текст или один лист на другой лист в Excel, используя свойство добавления гиперссылки. Формат должен сопровождаться указанием, где гиперссылка должна быть создана и URL навигации и т. Д.

Формат для VBA Гиперссылка Добавить


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

  • Якорь: Определяет ячейку, которую вы хотите создать гиперссылку.
  • Адрес: URL, по которому должна перейти навигация.
  • (SubAddress): подадрес URL.
  • (ScreenTip): значение указателя мыши, отображаемое при размещении указателя мыши.
  • (Текст для отображения): текст должен отображаться в ячейке.

Используйте свойство Active cell, чтобы добавить гиперссылку.


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


Примеры создания гиперссылок в Excel VBA

Ниже приведены различные примеры создания гиперссылок в Excel с использованием кода VBA.

Вы можете скачать этот шаблон гиперссылки VBA Excel здесь - Шаблон гиперссылки VBA Excel

Пример № 1 - Создание гиперссылки из рабочего листа на сайт

Мы хотим создать гиперссылку из рабочей таблицы с именем sub на веб-сайт, используя код VBA в Excel.

Ниже приведены шаги для создания гиперссылки в Excel VBA:

Шаг 1: Создайте функцию с именем hyper, чтобы добавить гиперссылку.

Код:


Шаг 2: Используйте активный объект ячейки, чтобы открыть метод добавления гиперссылки.

Код:


Шаг 3: Укажите значения параметров для метода добавления гиперссылки.

Код:

  • Якорь: название листа
  • Адрес: Гиперссылка, по которой следует перемещать элемент управления, учитывая адрес веб-сайта.
  • ScreenTip: текст указателя мыши
  • TextToDisplay: к какому тексту должна быть привязана гиперссылка

Шаг 4: Нажмите F5 или кнопку Run под VBE, чтобы запустить этот код и увидеть результат.


Пример №2 - Гиперссылка для соединения двух листов

У нас есть две таблицы с именами Home и sub . Давайте попробуем создать гиперссылку с юга на дом, используя код VBA.


Выполните следующие шаги, чтобы создать гиперссылку с одного листа на другой в той же книге, используя код VBA.

Шаг 1: Создайте функцию, где мы напишем все коды для выполнения действия. Напишите код для выбора «подчиненного» листа, используя метод выбора рабочего листа.

Код:


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

Шаг 2: Выберите диапазон ячеек на листе, где будет создана гиперссылка.

Код:


Шаг 3: Теперь давайте добавим гиперссылку, используя свойство active cell.

Код:


Поскольку рабочая таблица уже выбрана, привязка задается как «Выбор». Гиперссылка указана как лист «Домой» и диапазон А1.

Шаг 4: Запустите код и на листе будет показана гиперссылка, как показано ниже.

Шаг 5: После нажатия на текст элемент управления будет перемещен на лист « Домой ». И ячейка А1 будет выделена.

Пример № 3 - Гиперссылка с несколькими листами

Если вы хотите создать гиперссылку на нескольких листах, это также возможно. В этом примере у нас есть несколько листов в одной книге. Существует другой тип функций Excel, так что из основного листа «Функции». Давайте попробуем создать гиперссылку на другой лист, названный разными функциями, используя код VBA:

Несколько рабочих листов названы ниже с различными именами функций Excel


Поскольку мы хотим создать гиперссылку на каждый лист, трудно повторить код. Для создания гиперссылки с использованием кода VBA в Excel выполните следующие действия:

Шаг 1: Создайте переменную для удобной работы с таблицей.

Код:


Шаг 2: Теперь мы хотим выбрать главную страницу, которая действует как индексную страницу, и выбрать диапазон ячеек A1.

Код:


Шаг 3: Для перемещения по нескольким рабочим листам и гиперссылкам мы создаем для каждого цикла. A1 уже выбран в качестве активной ячейки, поэтому создайте гиперссылку из этого.

Код:


Шаг 4. Укажите значения параметров, чтобы создать гиперссылку для каждого листа. Поскольку гиперссылка начинается с активной ячейки, якорь = активная ячейка, адрес задается как «» .

Код:


Шаг 5: Гиперссылка проходит через лист, поэтому мы должны указать подадрес в качестве имен листов. Чтобы получить имена листов, мы можем использовать переменную ws и диапазон ячеек как A1. Название листа будет указано с одинарной кавычкой. Имя листа и диапазон будут указаны, а также закрыты одинарной кавычкой.

Код:


Шаг 6: Чтобы получить гиперссылку с именем листа, TextToDisplay присваивается как ws.Name

Код:


Этот код будет хранить гиперссылки для каждого листа в той же ячейке A1.

Шаг 7: Чтобы изменить этот каждый лист на другую ячейку вниз на одну ячейку от активной ячейки.

Код:


Шаг 8: Запустите программу, и каждое имя листа будет отображено на листе «Функции», и при нажатии на него элемент управления переместится на соответствующий лист.

То, что нужно запомнить

  • Свойство гиперссылки активной ячейки, используемой для создания гиперссылок в VBA.
  • Гиперссылка поможет легко перемещаться по книге.

Рекомендуемые статьи

Это руководство по гиперссылкам VBA. Здесь мы узнаем, как создавать гиперссылки на рабочем листе, используя код VBA для быстрого перехода с одного листа на другой, а также некоторые практические примеры и загружаемый шаблон Excel. Вы также можете просмотреть наши другие предлагаемые статьи -

Читайте также: