MyTetra Share
Делитесь знаниями!
Мгновенный переход на нужный раздел листа по кнопке
Время создания: 16.03.2019 23:22
Текстовые метки: Гиперссылки, Application.Goto
Раздел: !Закладки - MSO - Excel
Запись: xintrea/mytetra_db_adgaver_new/master/base/1540527212ao5obi4s4v/text.html на raw.githubusercontent.com

Мгновенный переход на нужный раздел листа по кнопке

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

Файл примера

Скачать

Метод гиперссылок

  1. Вместо того, чтобы использовать стандартные унылые кнопки с ленты Разработчик, хотелось бы обратить ваше внимание, что, вообще говоря, любой графический объект Excel может послужить вам кнопкой.

    Это может быть фигура (группа фигур) или рисунок. Надо ли говорить, что с эстетической точки зрения стандартные кнопки тихо курят в сторонке в сравнении со своими графическими собратьями?

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

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

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

Для вставки гиперссылки щёлкните на вашем графическом элементе правой кнопкой мыши и в контекстном меню выберите пункт Гиперссылка... В открывшемся диалоговом окне надо выбрать слева раздел Место в документе, выбрать нужный нам лист (в нашем случае он называется Гиперссылки) и ввести адрес ячейки, на которую должен встать табличный курсор (у нас B6). Нажмите OK. Протестируйте работу кнопки.

После того, как я проделаю это со всеми кнопками, вводя разные адреса ячеек, можно будет насладиться возможностью быстро перескакивать на нужные разделы нашего листа. Очень удобно. Ваши пользователи будут довольны. Однако, есть небольшая ложка дёгтя. Когда вы идёте последовательно по разделам вниз, то табличный курсор встаёт так, что не очень ясно, какой сейчас раздел текущий. Посмотрите:

Чтобы избавиться от этого эффекта можно использовать очень простой трюк на основе макросов

Макросом

  1. Вместо того, чтобы добавлять гиперссылку можно назначить очень простой VBA обработчик события нажатия мыши на нашем графическом объекте. Если вы уже добавили гиперссылку, то удалите её через контекстное меню фигуры. Я рекомендую дать вашим фигурам какие-то более благозвучные имена. Надо выделить фигуру и через адресную строку присвоить ей новое имя:

  2. После этого нужно в контекстном меню фигуры выбрать Назначить макрос...

    В открывшемся окне Назначить макрос объекту нажать кнопку Создать:

    После этого вы переноситесь в VBA редактор, где система предлагает вам написать программный код обработчика события. Когда вы проделаете вышеописанное для всех шести кнопок, то это должно выглядеть так:

Теперь можно ввести VBA код, который очень прост. Мы будем использовать метод Goto объекта Applications, который имеет 2 параметра:

  1. Ссылку на ячейку, в которую необходимо перейти табличному курсору
  2. Параметр, который предписывает (или нет) данной ячейке занимать в окне левый верхний угол. True или False.

Так будет выглядеть наш код для файла примера:


Sub btnOne_Щелчок()

  Application.Goto [B6], True

End Sub

 

Sub btnTwo_Щелчок()

  Application.Goto [B18], True

End Sub

 

Sub btnThree_Щелчок()

  Application.Goto [B30], True

End Sub

 

Sub btnFour_Щелчок()

  Application.Goto [B42], True

End Sub

 

Sub btnFive_Щелчок()

  Application.Goto [B54], True

End Sub

 

Sub btnSix_Щелчок()

  Application.Goto [B66], True

End Sub

И, как не трудно убедиться, данный способ не страдает вышеописанным недостатком.

Вот такой простой, но полезный трюк :)

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования