backtotop
Аргумент Excel. Как удобно выделить аргументы функции?
Как запустить макрос при изменении ячейки?

Иногда клиента не переубедишь. Думаю, это даже хорошо — ведь только клиент знает, что ему на самом деле нужно, а предоставляющий услугу должен стремиться сделать именно как просят. На этот раз мне заказали сделать, чтобы ячейки в матрице выбирались при помощи полосы прокрутки, горизонтальной и вертикальной. Основная причина — закрыть доступ к самой матрице и оставить возможность двигать только полосы прокрутки. Сделал именно так. А вам я расскажу, что такое полоса прокрутки в Excel, и как ее добавить на лист.

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

Полоса прокрутки в Excel. Начало

Добавить полосу прокрутки несложно: перейдите на вкладку разработчик (как включить вкладку, читайте здесь). Найдите кнопку Вставить и выберите Элемент управления формы — Полоса прокрутки. Как показано на картинке:

Полоса прокрутки в Excel

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

Полоса прокрутки в Excel, как элемент управления формы. Настройка

Итак, вы добавили полосу. Теперь привяжем ее к данным, сделать это несложно. Кликаете правой кнопкой мыши и выбираете формат объекта

Полоса прокрутки3

Размер вы можете изменять, перетаскивая границы, поэтому в открывшемся окне нам наиболее интересна вкладка Элемент управления

Полоса прокрутки в Excel. Настройка элемента управления

Задаем мин и макс значения (у нас полоса на месяцы, поэтом от одного до 12), задаем шаг изменения по одному месяцу

Двигая ползунок полосы прокрутки, вы передаете число значения ползунка в определенную ячейку.

Это число передается в ячейку, которую вы указываете в поле Связь с ячейкой. В нашем случае A2.

Добавим в полосу прокрутки немного макросов

Теперь, чтобы в таблице выбиралась определенная ячейка, добавим немного кода. Откройте редактор VBA (что это такое читайте в статье).

На странице листа запишите код

Sub ScrollBar8_Change()
   Cells(Range("A2").Value + 4, Range("B2").Value).Select
End Sub

Полоса прокрутки в Excel. Привязка макроса

Этот макрос будет выполняться при изменении полосы прокрутки ScrollBar8 методом Change. У меня элементов было много и форма управления восьмая. Узнать номер вашей полосы прокрутки можно в окне, предварительно выделив полосу.

Полоса прокрутки6

В Cells мы определяем значения нашей матрицы сначала по строкам, потом по столбцам. В ячейку B2 записываем статичное значение или передаем с горизонтальной полосы прокрутки. Вторую полосу создаем по аналогии.

Полный пример скачайте тут.

Как защитить лист, но дать возможность работать с полосой прокрутки (элементом управления форм)

Заходите во вкладку Рецензирование и найдите кнопку Защитить лист. Жмете ОК.  Но элементы управления форм тоже не работают во время защиты, — скажете вы. Верно. Я видел громоздкие коды, которые решали эту проблему. Но есть решение простое и удобное. Разрешите изменять ячейки, в которые полосы передают данные (A1 и B2), тогда и полосы будут работать при защищенном листе.

Чтобы разрешить изменение ячеек, кликните по ячейке правой кнопкой мыши — Формат ячеек — вкладка Защита — снимите галочку Защищаемая ячейка

Полоса прокрутки в Excel. отмена защиты

Теперь полосы прокрутки работают, как нам надо.

Надеюсь, понятно все изложил. Комментируйте и задавайте вопросы.

 

Аргумент Excel. Как удобно выделить аргументы функции?
Как запустить макрос при изменении ячейки?

Комментарии:

К этой записи пока нет комментариев. Возможно вы будете первым?

Добавить комментарий