Иногда клиента не переубедишь. Думаю, это даже хорошо — ведь только клиент знает, что ему на самом деле нужно, а предоставляющий услугу должен стремиться сделать именно как просят. На этот раз мне заказали сделать, чтобы ячейки в матрице выбирались при помощи полосы прокрутки, горизонтальной и вертикальной. Основная причина — закрыть доступ к самой матрице и оставить возможность двигать только полосы прокрутки. Сделал именно так. А вам я расскажу, что такое полоса прокрутки в Excel, и как ее добавить на лист.
Сперва я напишу, как правильно и быстро добавить полосу прокрутки на лист, затем опишу, как настроить полосы,привязать их к коду VBA и защитить лист.
Содержание
Полоса прокрутки в Excel. Начало
Добавить полосу прокрутки несложно: перейдите на вкладку разработчик (как включить вкладку, читайте здесь). Найдите кнопку Вставить и выберите Элемент управления формы — Полоса прокрутки. Как показано на картинке:
Можно выбрать и элементы ActiveX (ниже), но на мой взгляд настройка Элемента управления формы для новичка удобнее. Поэтому рассказываю именно о них.
Полоса прокрутки в Excel, как элемент управления формы. Настройка
Итак, вы добавили полосу. Теперь привяжем ее к данным, сделать это несложно. Кликаете правой кнопкой мыши и выбираете формат объекта
Размер вы можете изменять, перетаскивая границы, поэтому в открывшемся окне нам наиболее интересна вкладка Элемент управления
Задаем мин и макс значения (у нас полоса на месяцы, поэтом от одного до 12), задаем шаг изменения по одному месяцу
Двигая ползунок полосы прокрутки, вы передаете число значения ползунка в определенную ячейку.
Это число передается в ячейку, которую вы указываете в поле Связь с ячейкой. В нашем случае A2.
Добавим в полосу прокрутки немного макросов
Теперь, чтобы в таблице выбиралась определенная ячейка, добавим немного кода. Откройте редактор VBA (что это такое читайте в статье).
На странице листа запишите код
Sub ScrollBar8_Change() Cells(Range("A2").Value + 4, Range("B2").Value).Select End Sub
Этот макрос будет выполняться при изменении полосы прокрутки ScrollBar8 методом Change. У меня элементов было много и форма управления восьмая. Узнать номер вашей полосы прокрутки можно в окне, предварительно выделив полосу.
В Cells мы определяем значения нашей матрицы сначала по строкам, потом по столбцам. В ячейку B2 записываем статичное значение или передаем с горизонтальной полосы прокрутки. Вторую полосу создаем по аналогии.
Полный пример скачайте тут.
Как защитить лист, но дать возможность работать с полосой прокрутки (элементом управления форм)
Заходите во вкладку Рецензирование и найдите кнопку Защитить лист. Жмете ОК. Но элементы управления форм тоже не работают во время защиты, — скажете вы. Верно. Я видел громоздкие коды, которые решали эту проблему. Но есть решение простое и удобное. Разрешите изменять ячейки, в которые полосы передают данные (A1 и B2), тогда и полосы будут работать при защищенном листе.
Чтобы разрешить изменение ячеек, кликните по ячейке правой кнопкой мыши — Формат ячеек — вкладка Защита — снимите галочку Защищаемая ячейка
Теперь полосы прокрутки работают, как нам надо.
Надеюсь, понятно все изложил. Комментируйте и задавайте вопросы.
Комментарии:
К этой записи пока нет комментариев. Возможно вы будете первым?