В продолжение темы “элементы управления vba”, мы рассмотрим в этой статье такой элемент как ToggleButton — выключатель. Как я уже упоминал прежде, большая часть функциональных возможностей языка VBA не используется по определению…
Даже объекты класса ToggleButton vba несут чисто теоретический характер, так как данный компонент похож на кнопку, но выполняет такие же функции, что и CheckBox: вы нажимаете на кнопку, и она фиксируется в нажатом положении. Те, кто имел счастье работать с пакетами C++ или Delphi, или тот же Visual Basic, может заметить “советское” сходство всех этих пакетов. Я написал “советское”, потому что, те примеры, и продукты, которые можно сделать в этих программных средствах сильно отличаются по внешнему виду от того, чем пестрит современная ОС.
Ну сами подумайте: люди платят деньги, что бы научится работать с Word, Excel и Access, и если первые два продукта себя еще оправдывают – я с ними практически каждый день работаю, то Access – дохлый продукт. Тот же университет – ну учился я работать с матрицами, даже в C++ и Pascal программки писал, типа, сортировка матриц, и что… И где эти матрица мы в реальной жизни применяем? Ладно, с лирикой закончили…
У компонента vba ToggleButton те же свойства, что и у CheckBox, но, я опишу основные:
Name – как всегда, имя объекта заданного класса. Если вас смущают слова “класс” и “объект”, то поясню… На заре цифровых технологий зыки программирования плодились словно зайцы. Естественно, что никакой стандартизации не было, и каждый автор как хотел, так и именовал составные своего языка программирования. По сути, класс и объект — это одно и тоже. Просто в языке VBA класс – компонент с набором свойств, методов и событий (если есть), а объект – экземпляры этого класса.
Caption – надпись, которая будет прописана на поверхности ToggleButton
TripleState – свойство может содержать значение false или true. При значении false – объект будет поддерживать два состоянии, при true – три состояния.
Value – содержит состояние объекта: true – кнопка нажата, false – не нажата, null – кнопка серого цвета (третье состояние).
Я решил не париться, и просто переделал пример из прошлой статьи, значит так:
Добавляем в проект новую форму (меню Insert/UserForm) и новый модуль (меню Insert/Module). В редакторе кода для модуля пишем:
Sub TBModule() TBForm.Show End Sub |
Тут TBModule – имя модуля, а TBForm – название формы.
Теперь нужно добавить процедуры для формы. Просто в окне проекта выбираете форму и жмете на кнопку View Code и добавляете следующий код:
Private Sub ToggleButton1_Change() If ToggleButton1.Value = True Then ListBox1.AddItem ToggleButton1.Caption ToggleButton1.Enabled = False End If End Sub Private Sub ToggleButton2_Change() If ToggleButton2.Value = True Then ListBox1.AddItem ToggleButton2.Caption ToggleButton2.Enabled = False End If End Sub Private Sub ToggleButton3_Change() If ToggleButton3.Value = True Then ListBox1.AddItem ToggleButton3.Caption ToggleButton3.Enabled = False End If End Sub Private Sub ToggleButton4_Change() If ToggleButton4.Value = True Then ListBox1.AddItem ToggleButton4.Caption ToggleButton4.Enabled = False End If End Sub Private Sub ToggleButton5_Change() If ToggleButton5.Value = True Then ListBox1.AddItem ToggleButton5.Caption ToggleButton5.Enabled = False End If End Sub Private Sub ToggleButton6_Change() If ToggleButton6.Value = True Then ListBox1.AddItem ToggleButton6.Caption ToggleButton6.Enabled = False End If End Sub Private Sub ToggleButton7_Change() If ToggleButton7.Value = True Then ListBox1.AddItem ToggleButton7.Caption ToggleButton7.Enabled = False End If End Sub Private Sub ToggleButton8_Change() If ToggleButton8.Value = True Then ListBox1.AddItem ToggleButton8.Caption ToggleButton8.Enabled = False End If End Sub Private Sub ToggleButton9_Change() If ToggleButton9.Value = True Then ListBox1.AddItem ToggleButton9.Caption ToggleButton9.Enabled = False End If End Sub Private Sub ToggleButton10_Change() If ToggleButton10.Value = True Then ListBox1.AddItem ToggleButton10.Caption ToggleButton10.Enabled = False End If End Sub Private Sub ToggleButton11_Change() If ToggleButton11.Value = True Then ListBox1.AddItem ToggleButton11.Caption ToggleButton11.Enabled = False End If End Sub Private Sub ToggleButton12_Change() If ToggleButton12.Value = True Then ListBox1.AddItem ToggleButton12.Caption ToggleButton12.Enabled = False End If End Sub Private Sub CommandButton1_Click() ToggleButton1.Enabled = True ToggleButton2.Enabled = True ToggleButton3.Enabled = True ToggleButton4.Enabled = True ToggleButton5.Enabled = True ToggleButton6.Enabled = True ToggleButton7.Enabled = True ToggleButton8.Enabled = True ToggleButton9.Enabled = True ToggleButton10.Enabled = True ToggleButton11.Enabled = True ToggleButton12.Enabled = True ListBox1.Clear End Sub |
И так, еще раз напоминаю, что пример практически идентичен примеру из прошлой статьи, где я описывал компонент CheckBox, поэтому, я затрону лишь ключевые моменты. На форме находятся 12 объектов ToggleButton, они разбиты на 4 колонки по 3 штуки. Также на форме присутствует объект ListBox и CommandButton, при нажатии на выключатель происходит событие Change. Как только мы нажимаем на выключатель происходит проверка, если значение Value ровно true, то в список ListBox добавляется содержимое свойства Caption объекта ToggleButton vba языка и сам объект выключатель блокируется. Кнопка на форме служит для очистки списка и разблокирования выключателей.