Смена названия кнопки на пользовательской форме с помощью кода VBA Excel при однократном нажатии на нее. Пример с задержкой выполнения кода.
Смена названия кнопки
Самый простой код VBA Excel для смены названия кнопки при однократном нажатии:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
'Задаем кнопке название по умолчанию при загрузке формы Private Sub UserForm_Initialize() CommandButton1.Caption = "Старт" End Sub 'Меняем название кнопки при однократном клике Private Sub CommandButton1_Click() If CommandButton1.Caption = "Старт" Then CommandButton1.Caption = "Стоп" Else CommandButton1.Caption = "Старт" End If End Sub |
Код размещается в модуле пользовательской формы.
Пример использования
Создайте аналогичную форму — два текстовых поля и кнопка (можно без названия кнопки, так как при инициализации формы она будет переименована):
Следующий код VBA Excel при нажатии кнопки CommandButton1 меняет ее название и включает случайное задание цвета заливки для текстовых полей:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
'Задаем кнопке название по умолчанию при загрузке формы Private Sub UserForm_Initialize() CommandButton1.Caption = "Старт" End Sub 'Меняем название кнопки при однократном клике Private Sub CommandButton1_Click() If CommandButton1.Caption = "Старт" Then CommandButton1.Caption = "Стоп" 'Запускаем процедуру автоматической смены цвета заливки текстовых полей Call Smena Else CommandButton1.Caption = "Старт" End If End Sub 'Процедура для задержки выполнения других процедур Sub Pausa(ByVal y As Single) Dim x As Single x = Timer Do While Timer < x + y DoEvents Loop End Sub Sub Smena() Do While CommandButton1.Caption = "Стоп" 'Включаем процедуру задержки на 0,6 секунд Call Pausa (0.6) 'Раз в 0,6 секунд случайным образом меняем цвет фона текстовых полей TextBox1.BackColor = RGB(Rnd * 256, Rnd * 256, Rnd * 256) TextBox2.BackColor = RGB(Rnd * 256, Rnd * 256, Rnd * 256) Loop 'По окончанию работы цикла возвращаем цвета заливок к значениям по умолчанию TextBox1.BackColor = -2147483643 TextBox2.BackColor = -2147483643 End Sub 'Задаем кнопке надпись "Старт" при закрытии формы Private Sub UserForm_Terminate() CommandButton1.Caption = "Старт" End Sub |
Все процедуры размещаются в модуле пользовательской формы.
При загрузке пользовательской формы кнопке CommandButton1 присваивается название «Старт». При однократном нажатии кнопки надпись меняется на «Стоп», и запускается процедура «Smena», которая с заданной периодичностью изменяет фоновые цвета текстовых полей TextBox1 и TextBox2.
Цвета текстовых полей меняются с периодичностью, зависящей от значения аргумента «y» процедуры «Pausa», вызываемой в процедуре «Smena». При повторном нажатии кнопки, ее название меняется на «Старт», и процедура «Smena» останавливается.
Строка CommandButton1.Caption = "Старт"
в процедуре UserForm_Terminate()
необходима для того, чтобы при закрытии пользовательской формы UserForm1 крестиком при работающей процедуре «Smena», не происходила ошибка, приводящая к перезагрузке приложения Excel.
Фразы для контекстного поиска: пауза, задержка, приостановка, задержка выполнения кода, изменение, заливка, фон.