Excel. Трюки и эффекты | страница 125
' для первой фигуры
alngVertSpeed(1) = 3
alngHorzSpeed(1) = 3
' для второй фигуры
alngVertSpeed(2) = 4
alngHorzSpeed(2) = 4
' Получение границ рабочей ячейки
Set cell = Range(«B2»)
intLeftBorder = cell.Left
intRightBorder = cell.Left + cell.Width
intTopBorder = cell.Top
intBottomBorder = cell.Top + cell.Height
' Выполнение вращения и перемещения фигур
Do
' Изменение положения каждой автофигуры
For i = 1 To 2
With ashShapes(i)
' Контроль достижения правой границы ячейки
If .Left + .Width + alngHorzSpeed(i) >
intRightBorder Then
' Корректировка положения
.Left = intRightBorder – .Width
' Изменение направления горизонтальной скорости _
на противоположное
alngHorzSpeed(i) = -alngHorzSpeed(i)
End If
' Контроль достижения левой границы ячейки
If .Left + alngHorzSpeed(i) < intLeftBorder Then
' Корректировка положения
.Left = intLeftBorder
' Изменение направления горизонтальной скорости _
на противоположное
alngHorzSpeed(i) = -alngHorzSpeed(i)
End If
' Контроль достижения нижней границы ячейки
If .Top + .Height + alngVertSpeed(i) >
intBottomBorder Then
' Корректировка положения
.Top = intBottomBorder – .Height
' Изменение направления вертикальной скорости _
на противоположное
alngVertSpeed(i) = -alngVertSpeed(i)
End If
' Контроль достижения верхней границы ячейки
If .Top + alngVertSpeed(i) < intTopBorder Then
' Корректировка положения
.Top = intTopBorder
' Изменение направления вертикальной скорости _
на противоположное
alngVertSpeed(i) = -alngVertSpeed(i)
End If
' Перемещение автофигуры
.Left = .Left + alngHorzSpeed(i)
.Top = .Top + alngVertSpeed(i)
' Вращение автофигуры (изменение направления вращения _
происходит каждый раз при изменении направления _
вертикального перемещения)
.IncrementRotation alngVertSpeed(i)
' Даем Excel команду обработать пользовательский ввод
DoEvents
End With
Next
Loop
End Sub
Теперь в ячейке B2 нужно создать две любые автофигуры (перед этим ячейку В2 следует существенно увеличить, сделав ее размером примерно с четверть экрана, чтобы было место для вращения автофигур).
Примечание
Адрес ячейки можно устанавливать любой, но для этого необходимо внести соответствующие изменения в код макроса.
Теперь, запустив созданный макрос, полюбуйтесь результатом своей работы – автофигуры будут вращаться и одновременно перемещаться в пределах указанной ячейки. При желании можно раскрасить автофигуры в разные цвета и установить какой-нибудь фон для ячейки.
Вызов таблицы цветов
При необходимости можно вывести на экран таблицу цветов и соответствующих значений свойства Colorlndex (данное свойство задает индексированный цвет заливки в соответствии с палитрой цветов). Для этого создадим и запустим следующий макрос (листинг 3.77).