Создание интерактивных календарей в MS Power Point с использованием VBA.
1 шаг:
Для создания интерактивного календаря нам понадобиться обычный календарь. Из этого календаря мы выберем 3 месяца, которые будем использовать для написании кода. Я возьму три месяца - Январь, Февраль и Декабрь.

2 шаг:
Дальше открываем MS Power Point и создаем пустой слайд. После чего добавляем клавиши «Подпись(элемент Activ X)» и «Кнопка(ActiveX)» если они еще не добавлены.

Настраиваем панель – ЭЛЕМЕНТЫ УПРАВЛЕНИЯ
(Открываем Панель быстрого доступа – Другие команды – Все команды – Элементы управления.)
3 шаг:
Пустой слайд лучше украсить дизайном, лично мне нравится для этой работы дизайн «Поток» 3 стиль фона.
Следующим шагом добавляем прямоугольник (Вставка – фигуры - прямоугольник) и вставляем в него надпись 2019.
После чего добавляем 3 кнопки, это будут наши месяца.
Их также берем с панели ЭЛЕМЕНТЫ УПРАВЛЕНИЯ и помещаем на слайд
Щелкнув правой по каждой кнопке и выбрав СВОЙСТВА, зададим нужный размер и цвет шрифта
Фон кнопки
Имя кнопки
с) Дальше под кнопками мы добавляем 7 прямоугольников, это будут дни недели. Желательно между ними делать промежутки, что бы в будущем они не слились.
У нас должно получится это:
4 шаг:
На этом этапе мы будем добавлять наши будущие числа. Для этого мы берем лейблы (Подпись) в элементах управления и создаем ячейки. Ячейки создаем слева – направо, снизу – вверх, Первая ячейка создается под Понедельником. Для того что бы узнать сколько нам понадобиться ячеек, мы берем месяц в котором больше всего строк и в котором в последней строке больше всего ячеек (у нас это декабрь) и считаем кол-во ячеек начиная с самой первой ячейки, даже если в декабре он пустая.
В данном кроссворде 37 ячеек:
Ячейки мы не переименовываем и не красим, у меня на картинке в ячейках уже есть числа, но у вас будет Label1.
5 шаг:
Дальше начинаем писать код, сразу хочу сказать, что код я писал сам и поэтому он получился большим, но зато очень понятным и легким в написании. Кликнем первый месяц – Январь, открывается окно VBA.
В написании каждой кнопки, вначале мы вставляем этот код:
Label1.BackColor = RGB(255, 255, 255)
Label2.BackColor = RGB(255, 255, 255)
Label3.BackColor = RGB(255, 255, 255)
Label4.BackColor = RGB(255, 255, 255)
Label5.BackColor = RGB(255, 255, 255)
Label6.BackColor = RGB(225, 0, 113)
Label7.BackColor = RGB(225, 0, 113)
Label8.BackColor = RGB(255, 255, 255)
Label9.BackColor = RGB(255, 255, 255)
Label10.BackColor = RGB(255, 255, 255)
Label11.BackColor = RGB(255, 255, 255)
Label12.BackColor = RGB(255, 255, 255)
Label13.BackColor = RGB(225, 0, 113)
Label14.BackColor = RGB(225, 0, 113)
Label15.BackColor = RGB(255, 255, 255)
Label16.BackColor = RGB(255, 255, 255)
Label17.BackColor = RGB(255, 255, 255)
Label18.BackColor = RGB(255, 255, 255)
Label19.BackColor = RGB(255, 255, 255)
Label20.BackColor = RGB(225, 0, 113)
Label21.BackColor = RGB(225, 0, 113)
Label22.BackColor = RGB(255, 255, 255)
Label23.BackColor = RGB(255, 255, 255)
Label24.BackColor = RGB(255, 255, 255)
Label25.BackColor = RGB(255, 255, 255)
Label26.BackColor = RGB(255, 255, 255)
Label27.BackColor = RGB(225, 0, 113)
Label28.BackColor = RGB(225, 0, 113)
Label29.BackColor = RGB(255, 255, 255)
Label30.BackColor = RGB(255, 255, 255)
Label31.BackColor = RGB(255, 255, 255)
Label32.BackColor = RGB(255, 255, 255)
Label33.BackColor = RGB(255, 255, 255)
Label34.BackColor = RGB(225, 0, 113)
Label35.BackColor = RGB(225, 0, 113)
Label36.BackColor = RGB(255, 255, 255)
Label37.BackColor = RGB(255, 255, 255)
Эти строки кода требуются для того, что бы лейблы которые выпали на будние дни красились в белый цвет(Например: Label1.BackColor = RGB(255, 255, 255),Label2.BackColor = RGB(255, 255, 255) и тд.), а выходные дни красились в красный (Например: Label34.BackColor = RGB(225, 0, 113),Label35.BackColor = RGB(225, 0, 113) и тд.).
При этом не забываем вставлять это в начале каждой кнопки месяца, это требуется для того, что бы нажимая каждый новый месяц кнопки, очищались от лишних (праздничных) цветов.
6 шаг:
Дальше пишем код, который будет вставлять в ячейки нужные числа, а праздничные дни красил в красный.
Для того, что бы начать писать код нужно знать азы, а именно:
Labelздесь указывается номер лейбла.Caption = а здесь то что ему присевается
Label1.Caption = "" (Эта строка присваивает 1 лейблу пустоту, так как в январе первое число начинается со вторника. Эту строку мы используем для всех пустых ячеек, только вместо Label1.Caption = "", там будет число лейбла, который нам нужен, к примеру Label37.Caption = "" ).
Label2.Caption = 1 (Эта строка требуется для присваивания нужному лейблу нужную дату, для этого нам пригодится календарик).
Label3.Caption = 2
Label4.Caption = 3
Label5.Caption = 4
Label6.Caption = 5
Label7.Caption = 6
Label8.Caption = 7
Label9.Caption = 8
….
Label2.BackColor = RGB(0, 255, 255)
Label3.BackColor = RGB(0, 255, 255) (Эти строки мы используем, что бы менять цвет у праздничных дней. ГЛАВНОЕ при написании строк праздников не забывать, что мы пишем не дату, а номер лейбла, который нужно покрасить. Тут снова календарик в помощь.)
….
Пример для января:
Private Sub CommandButton1_Click()
Тут еще строки кода для присваивания цвета.
Label1.Caption = ""
Label2.Caption = 1
Label3.Caption = 2
Label4.Caption = 3
Label5.Caption = 4
Label6.Caption = 5
Label7.Caption = 6
Label8.Caption = 7
Label9.Caption = 8
Label10.Caption = 9
Label11.Caption = 10
Label12.Caption = 11
Label13.Caption = 12
Label14.Caption = 13
Label15.Caption = 14
Label16.Caption = 15
Label17.Caption = 16
Label18.Caption = 17
Label19.Caption = 18
Label20.Caption = 19
Label21.Caption = 20
Label22.Caption = 21
Label23.Caption = 22
Label24.Caption = 23
Label25.Caption = 24
Label26.Caption = 25
Label27.Caption = 26
Label28.Caption = 27
Label29.Caption = 28
Label30.Caption = 29
Label31.Caption = 30
Label32.Caption = 31
Label33.Caption = ""
Label34.Caption = ""
Label35.Caption = ""
Label36.Caption = ""
Label37.Caption = ""
Label2.BackColor = RGB(0, 255, 255)
Label3.BackColor = RGB(0, 255, 255)
Label4.BackColor = RGB(0, 255, 255)
Label5.BackColor = RGB(0, 255, 255)
Label6.BackColor = RGB(0, 255, 255)
Label7.BackColor = RGB(0, 255, 255)
Label8.BackColor = RGB(0, 255, 255)
Label9.BackColor = RGB(0, 255, 255)
End Sub
7 шаг:
Добавляем поясняющие строки (Прямоугольники+ напротив текст).
И в самом конце после того как вы все сохранили (с поддержкой макрасов), добавляем еще одну кнопу ВЫХОД:
Private Sub CommandButton3_Click()
Application.Quit
End Sub
Вот что должно получится в конце.

После чего снова сохраняем и пробуем программу.