Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA 9 Операторы цикла.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
164.86 Кб
Скачать

Случайно мигающие ячейки

Еще одна простая программа, макрос Makt, включает и выключает огоньки-ячейки на рабочем листе. Имя рабочего листа не используется, поэтому программа работает на любом открытом листе. Для запуска программы сделайте комбинацию клавиш <Ctrl+t>.

Sub Makt()

Dim i As Long, kr As Long, kc As Long

Dim BegTime As Single, Start As Single

Dim PauseTime As Single

Range("A1").Select

Selection.NumberFormat = "0.0"

PauseTime = 0.2 ' пауза в секундах

BegTime = Timer ' начало работы

For i = 1 To 50

kr = Rnd * 20: kc = Rnd * 10

Range("A2").Offset(kr, kc).Select

With Selection.Interior

.ColorIndex = kr + kc

.Pattern = xlSolid

End With

Start = Timer ' начало паузы

Range("A1").Value = Round(Start - BegTime, 1)

Do While Timer < Start + PauseTime

Loop

Selection.Interior.ColorIndex = xlNone

Next i

Range("A1").Select

End Sub

Пояснения к программе.

В цикле For Next будем включать (закрашивать фон) и выключать ячейки (удалять цвет). В цикл For Next вставим паузу, цикл Do Loop (как в предыдущей программе), чтобы увидеть перекрашивание ячеек.

Функция VBA Rnd возвращает псевдослучайное число в интервале от 0 до 1. Умножая Rnd на 10 и на 20, на рабочем листе вычисляем случайный адрес ячейки как сдвиг относительно ячейки A2 на случайное число строк kr (от 0 до 20) и на случайное число столбцов kc (от 0 до 10).

У выделенной ячейки закрашиваем фон случайным цветом с номером kr+kc в операторе With End With.

Функция VBA Timer возвращает время начала паузы Start. Паузу создает цикл Do Loop. Он прекращает свою работу, когда Timer вернет время, превышающее Start+PauseTime. Для цвета фона ячейки задается значение xlNone – не установлен.

Чтобы следить за работой программы, на каждом витке цикла в ячейку A1 выводится время, прошедшее с начала работы программы. Для длительности паузу 0,2 сек. и 50 тактов цикла накопилось время 10 секунд. Это говорит о том, что перемещение табличного курсора и перекрашивание ячеек происходит практически мгновенно.