Microsoft Excel

трюкиприёмырешения

Динамическое перемещение кнопки средствами VBA Excel

Рассмотрим еще один простой, по эффектный пример. Задача заключается в том, чтобы разместить на листе кнопку, и эта кнопка, при попытке навести на нее курсор мыши, должна автоматически перемещаться на другое место на рабочем листе. Фактически в этом случае при выходе из режима конструктора невозможно навести на кнопку курсор мыши. Рассмотрим, что для подобного эффекта необходимо сделать.

Во-первых, на листе новой книги создадим кнопку (рис. 1.41), ее свойство Name установим в значение Com1. Далее перейдем в режим конструктора и напишем содержание процедуры Com1_MouseMove(). Сам короткий текст несложной процедуры представлен в листинге 1.25.

Рис. 1.41. Пример «убегающей» кнопки

Рис. 1.41. Пример «убегающей» кнопки

Как мы уже знаем, эта процедура автоматически выполняется при наведении курсора мыши на кнопку. В приведенном тексте используется внутренняя функция Visual Basic — Rnd, которая при обращении к ней выдает случайное число в интервале от 0 до 1. Координаты кнопки на листе определяются значениями свойств Тор и Left. Так как функция Rnd выдает произвольное действительное число от 0 до 1, то после умножения этого значения на 300 координаты кнопки могут принимать любые значения в интервале от 0 до 300.

Теперь после перехода в Microsoft Excel и выхода из режима конструктора можно убедиться в том, что положение кнопки при наведении на нее курсора мыши меняется.

1
2
3
4
5
' Листинг 1.25. Процедура, выполняемая при наведении курсора мыши на кнопку
Private Sub Com1_Click()
Com1.Left = Rnd * 300
Com1.Top = Rnd * 300
End Sub
Top