Найти тему

📌 VBA Excel: методы Calculate и IncrementRotation. Создаем игру "Новогоднее колесо фортуны" в Excel

В преддверии праздников уж очень хочется чего-то необычного и немного волшебного 😉

Особой магией мы конечно не обладаем, но сгенерировать предсказание на 2024 год - это пожалуй возможно!

В данном обзоре мы предлагаем свой вариант игры "Колесо фортуны" реализованный посредством генерирования случайного числа и применения методов Calculate и IncrementRotation.

Новогоднее колесо фортуны в Excel: Методы Calculate и IncrementRotation VBA Excel
Новогоднее колесо фортуны в Excel: Методы Calculate и IncrementRotation VBA Excel

📢 Файл с примером размещен в конце статьи 🔽

-3

▶️ Готовим шаблон колеса фортуны

Мы заведомо не используем готовые изображения, чтобы еще раз продемонстрировать, что все необходимое уже есть в Excel.

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

Как добавить фигуру в Excel
Как добавить фигуру в Excel

Например:

Используя набор базовых фигур создаем нужный шаблон
Используя набор базовых фигур создаем нужный шаблон

Для группы фигур образующих элемент на который будет назначено вращение назначим имя "Стрелка".

А в ячейке А1 пропишем формулу: =СЛЧИС():

Функции СЛЧИС
Функции СЛЧИС

Данная функция не имеет аргументов и возвращает случайное число от 0 до 1 при каждом пересчете.

Такой подход в связке с методом Calculate позволит задать стрелке требуемое вращение.

▶️ IncrementRotation

- метод, который можно использовать в для изменения угла поворота объекта на листе Excel.

IncrementRotation применим к объектам, которые поддерживают вращение, таким как формы, изображения и другие элементы.

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

▶️ Calculate

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

📝 Основные аспекты использования:

  • Пересчет формул: Calculate применяется для пересчета всех формул в рабочей книге, включая все листы и ячейки. Метод будет полезен, когда в файле есть формулы, зависящие от ячеек, которые содержат функции, данные или формулы.
  • Использование в коде VBA: метод может быть использован для явного запуска процесса пересчета.
    Например:
    ActiveSheet.Calculate - пересчитывает все формулы на активном листе.
  • Обновление связанных данных: в некоторых сценариях, когда данные подтягиваются из внешних источников, Calculate может использоваться для обновления этих данных.

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

▶️ Генерация случайного целого числа в заданном диапазоне

Чтобы сгенерировать случайное число при помощи VBA следует использовать тип данных Int и функцию Rnd.

Например,

строка randomValue = Int((300 - 150 + 1) * Rnd + 150) генерирует случайное целое число в диапазоне от 150 до 300 (включительно) и присваивает его переменной randomValue.
строка randomValue = Int((300 - 150 + 1) * Rnd + 150) генерирует случайное целое число в диапазоне от 150 до 300 (включительно) и присваивает его переменной randomValue.

⚙️ Краткое описание:

  • Rnd - встроенная функция VBA, которая возвращает случайное число с плавающей запятой в диапазоне от 0 (включительно) до 1 (исключительно).
  • выражение (300 - 150 + 1) определяет диапазон чисел, из которого будет выбрано случайное значение. В данном случае, это от 150 до 300 включительно. Вычитание 150 регулирует диапазон, а добавление 1 учитывает верхнюю границу.
  • Int(...) - функция округления в меньшую сторону, которая используется для преобразования случайного числа с плавающей запятой, возвращаемого Rnd, в целое число.

🔷 В результате выполнения этой строки переменная randomValue будет содержать случайное целое число из указанного диапазона.

▶️ Пишем код

Все методы мы рассмотрели, теперь осталось применить их для рассматриваемого примера:

В данном примере кода мы используем метод IncrementRotation для изменения угла поворота фигуры на листе
В данном примере кода мы используем метод IncrementRotation для изменения угла поворота фигуры на листе

⚙️ Краткое описание:

  • randomValue: переменная, в которой генерируется случайное значение между 150 и 300, которое используем в цикле для задания числа вращений (подробно рассмотрено выше);
  • Цикл For: выполняет поворот стрелки в случайное число раз в соответствии со значением переменной randomValue;
  • ActiveSheet.Calculate: обновляет значения формул на активном листе;
  • IncrementRotation: метод, применяемый к форме "Стрелка", увеличивает ее угол поворота (в условиях примера принято значение 10).

🔔 Важно!

  • чтобы обеспечить плавность вращения не рекомендуем задавать угол поворота более 15;
  • чем меньше значение угла, тем медленней будет вращаться стрелка.

➡️ Чтобы сбросить результат и вернуть стрелку в начальное положение можно применить следующий поход:

Данный макрос предназначен для сброса угла поворота объекта "Стрелка"
Данный макрос предназначен для сброса угла поворота объекта "Стрелка"

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

▶️ Тестируем результат

Вот такое предсказание получили мы:

Новогоднее колесо фортуны в Excel
Новогоднее колесо фортуны в Excel

А что выпало вам!? 😉

Пиши ответ в комментариях. Будем рады вашей обратной связи 💖

🔶 Другие материалы новогодней подборки:

🔔 Узнать больше о приемах и методах в Excel и быстро найти нужное решение поможет наш справочник 🔽

-12
Excel на ИЗИ

СКАЧАТЬ ПРИМЕР

С подпиской рекламы не будет

Подключите Дзен Про за 159 ₽ в месяц