Метод MoveBy применяется для программного изменения позиции объекта (например, графика, формы, изображения) на листе. Этот метод относится к объектам Shape и позволяет смещать элемент на указанное количество пикселей по горизонтали и вертикали.
Используя метод MoveBy, можно программно анимировать перемещение объектов, создавая интересные и динамичные визуальные эффекты.
Один из таких примеров, позволяющий управлять отображением объектов с использованием переключателя рассмотрим сегодня в обзоре.
📢 Скачать пример файла вы можете по ссылке внизу статьи 🔽
▶️ Краткий обзор метода MoveBy
🔘 Синтаксис:
🔘 Применение
- MoveBy используется в контексте работы с объектами Shape, например, графиками или формами.
- Метод позволяет программно управлять положением объекта на листе и будет полезен при создании макросов или процедур VBA, где необходимо изменять расположение объектов.
Например:
В данном примере объект "MyShape" будет смещен на 10 пикселей вправо и 5 пикселей вниз.
▶️ Исходные данные
Для целей данного примера рассмотрим следующий ряд данных
и создадим 2 (два) простых графика:
В качестве графика по умолчанию определим график "Выручка в день", которому присвоим имя Chart:
📝 Примечание автора: Данный график будет виден пользователю при выключенном переключателе.
▶️ Создаем форму "переключатель"
Для управления отображением графиков используя базовые фигуры Excel создадим элементы для переключателя:
Элементу, имитирующему переключение, назначим имя switch:
▶️ Визуальное изменение состояния отображение объекта при помощи переключателя
Для того чтобы выполнить простую анимацию переключения видимости графика назначим на объект "переключатель" следующий макрос:
⚙️ Краткое описание:
- Изменяем видимость формы "Chart" на текущем активном листе. Если форма видима, она делается невидимой, и наоборот.
- Зависимости от условия (проверяем, видима ли форма "Chart"). В зависимости от видимости формы, изменяем значение переменной moveBy и цвет заливки формы "переключатель".
- Выполняем цикл заданное число раз.
- IncrementLeft moveBy: изменяет положение формы "переключатель" по горизонтали на значение, хранящееся в переменной moveBy. Таким образом, форма перемещается влево (если moveBy отрицательно) или вправо (если moveBy положительно).
- DoEvents: позволяет системе обрабатывать события во время выполнения цикла.
В результате объект будет перемещен вправо имитируя включения переключателя, и на и влево - имитируя его выключение.
▶️ Логика управления перемещением
Для того, чтобы перемещение объекта было корректным следует:
- измерить фактическое расстояние, которое вы хотите, чтобы объект переместился;
- определить, сколько пикселей или единиц измерения вашего листа соответствует этому фактическому расстоянию;
- настроить количество итераций в цикле в соответствии с этими измерениями.
Сделать процесс более точным поможет использование переменной, которая будет изменяться на фиксированное расстояние на каждой итерации.
Приведенный выше код управляет перемещением объекта в цикле с помощью For i = 1 To steps. Значение steps определяет количество шагов в цикле, и, таким образом, влияет на общее расстояние перемещения объекта.
В контексте рассмотренного примера, moveBy используется как величина смещения объекта в каждой итерации цикла.
🔔 Если вам нужно, чтобы объект переместился на иное расстояние, исходя из его размера, вы можете воспользоваться нашим расчетным калькулятором (см. приложенный файл):
Поэкспериментируйте с различными значениями, чтобы добиться желаемого эффекта.
➡️ А вот такой результат получился у нас 😉
🔷 А с другими приемами и методами визуализации в Excel вы можете ознакомиться в наших предыдущих обзорах 🔽
🙌 Оставайся с нами на связи и узнавай больше о других методах и приемах работы в Excel:
✅ СКАЧАТЬ ПРИМЕР 🔽