Класс ToggleButton — работа с выключателями VBA

Класс ToggleButton — работа с выключателями VBA Макросы на VBA

В продолжение темы “элементы управления 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.ShowEndSub

Тут TBModule – имя модуля, а TBForm – название формы.

Форма с компонентми vba togglebutton

Теперь нужно добавить процедуры для формы. Просто в окне проекта выбираете форму и жмете на кнопку View Code и добавляете следующий код:

PrivateSub ToggleButton1_Change()    If ToggleButton1.Value = TrueThen        ListBox1.AddItem ToggleButton1.Caption        ToggleButton1.Enabled = False    EndIfEndSub PrivateSub ToggleButton2_Change()    If ToggleButton2.Value = TrueThen        ListBox1.AddItem ToggleButton2.Caption        ToggleButton2.Enabled = False    EndIfEndSub PrivateSub ToggleButton3_Change()    If ToggleButton3.Value = TrueThen        ListBox1.AddItem ToggleButton3.Caption        ToggleButton3.Enabled = False    EndIfEndSub PrivateSub ToggleButton4_Change()    If ToggleButton4.Value = TrueThen        ListBox1.AddItem ToggleButton4.Caption        ToggleButton4.Enabled = False    EndIfEndSub PrivateSub ToggleButton5_Change()    If ToggleButton5.Value = TrueThen        ListBox1.AddItem ToggleButton5.Caption        ToggleButton5.Enabled = False    EndIfEndSub PrivateSub ToggleButton6_Change()    If ToggleButton6.Value = TrueThen        ListBox1.AddItem ToggleButton6.Caption        ToggleButton6.Enabled = False    EndIfEndSubPrivateSub ToggleButton7_Change()    If ToggleButton7.Value = TrueThen        ListBox1.AddItem ToggleButton7.Caption        ToggleButton7.Enabled = False    EndIfEndSub PrivateSub ToggleButton8_Change()    If ToggleButton8.Value = TrueThen        ListBox1.AddItem ToggleButton8.Caption        ToggleButton8.Enabled = False    EndIfEndSub PrivateSub ToggleButton9_Change()    If ToggleButton9.Value = TrueThen        ListBox1.AddItem ToggleButton9.Caption        ToggleButton9.Enabled = False    EndIfEndSub PrivateSub ToggleButton10_Change()    If ToggleButton10.Value = TrueThen        ListBox1.AddItem ToggleButton10.Caption        ToggleButton10.Enabled = False    EndIfEndSub PrivateSub ToggleButton11_Change()    If ToggleButton11.Value = TrueThen        ListBox1.AddItem ToggleButton11.Caption        ToggleButton11.Enabled = False    EndIfEndSub PrivateSub ToggleButton12_Change()    If ToggleButton12.Value = TrueThen        ListBox1.AddItem ToggleButton12.Caption        ToggleButton12.Enabled = False    EndIfEndSub PrivateSub 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.ClearEndSub

И так, еще раз напоминаю, что пример практически идентичен примеру из прошлой статьи, где я описывал компонент CheckBox, поэтому, я затрону лишь ключевые моменты. На форме находятся 12 объектов ToggleButton, они разбиты на 4 колонки по 3 штуки. Также на форме присутствует объект ListBox и CommandButton, при нажатии на выключатель происходит событие Change. Как только мы нажимаем на выключатель происходит проверка, если значение Value ровно true, то в список ListBox добавляется содержимое свойства Caption объекта ToggleButton vba языка и сам объект выключатель блокируется. Кнопка на форме служит для очистки списка и разблокирования выключателей.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий