Класс 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.Show
End Sub

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

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

Теперь нужно добавить процедуры для формы. Просто в окне проекта выбираете форму и жмете на кнопку 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 языка и сам объект выключатель блокируется. Кнопка на форме служит для очистки списка и разблокирования выключателей.

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