Основы программирования

Офисное программирование - Элементы управления ComboBox, OptionButton и Frame
Индекс материала
Офисное программирование
Осноные седения о программироании на VBA
Определения
Обзор типов данных VBA
Переменные
Константы
Математические функции
Операторы и выражения
Логические операторы
Повторение действий: циклы
Объект UserForm
Использование форм
Задачи на закрепление материала
Массивы, процедуры, функции
Работа с различными типами данных
Функции работы со строками
Процедуры и функции VBA
Макросы
Создание VBA-программ
Элементы управления ComboBox, OptionButton и Frame
Элементы управления MultiPage, ScrollBar, SpinButton
Набор страниц MultiPage
Полоса прокрутки ScrollBar
Объект DataObject
Реализация технологии DragAndDrop
Программирование на VBA в Word
События объекта Document
Объекты Range и Selection
Работа с буфером
Форматирование документа
Создание кнопки или панели в Word
Автоматизация стандартных документов
Задачи на закрепление материала
Создание VBA-программ
Создание модуля Печать
Создание модулей работы кнопок
Особенности использования VBA в Excel
Метод AutoFilter
Метод Sort
Использование метода GoalSeek
Использование методов AutoFill
Математическая модель решения задачи
Разработка интерфейса пользователя
Финансовые функции
Построение диаграмм средстами VBA
Базы данных в Excel
Конструирование пользовательского интерфейса
Конструирование интерфейса. Презентация
Создание собственного головного меню
Добавление подменю
Добавление выпадающих меню
Все страницы

 

Поле со списком

 

Элемент управления СотbоВох

 

(поле со списком) создается с помощью соответствующего элемента. Элемент управления СотЪоВох применяется для хранения списка значений. Он сочетает в себе функциональные возможности списка ListBox и поля TextBox. В отличие от ListBox, в элементе управления СотЪоВох отображается только один элемент списка. Кроме того, у него отсутствует режим выделения нескольких элементов списка, но он позволяет вводить значение, используя поле ввода, как это делает элемент управления TextBox.

Свойства объекта ComboBox, такие как ListIndex, ListCount, Enabled, List, и методы Clear, RemoveItem и AddItem аналогичны соответствующим свойствам и методам списка ListBox. Кроме того, у него есть ряд уникальных свойств:

DropButtonStyle – устанавливает вид раскрывающегося списка. Допустимые значения:

fmDropButtonStylePlain – кнопка без символов;

fmDropButtonStyleArrowDisplays – кнопка со стрелкой;

fmDropButtonStyleEllips – кнопка с эллипсом;

fmDropButtonStyleReduce – кнопка с линией.

ListRows – устанавливает число элементов, отображаемых в раскрываемом списке.

MatchRequired – допустимые значения: True (нельзя ввести значения) и False (в противном случае).

MatchFound – допустимые значения: True (среди элементов раскрывающегося списка имеется элемент, совпадающий с вводимым в поле ввода раскрывающегося списка) и False (в противном случае).

 

Переключатель и рамка

 

Элемент управления OptionButton

 

(переключатель) создается с помощью соответствующего элемента. Он позволяет выбрать один из нескольких взаимоисключающих параметров или действий. Переключатели обычно отображаются группами, обеспечивая возможность выбора альтернативного варианта (см. п. 3.3).

Элемент управления Frame

 

(рамка) создается с помощью соответствующего элемента. Он используется для визуальной группировки элементов управления. Основным свойством рамки является caption, отображающее надпись рамки.

 

Задачи на закрепление материала

 

Пример 22.[1] Создать программу, которая позволяет при выделении из списка формы нескольких чисел производить суммирование, находить произведение или среднее значение в зависимости от выбора действия (операции).

Нажатие кнопки «Вычислить» должно привести к выполнению выбранной операции над выбранными числами и выводу результата в поле «Результат» (рис. 40).

 

 

Рис. 40. Разработанная форма примера 22 в рабочем состоянии

 

Технология выполнения

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

 

UserForm_Initialize

 

1. Активизирует диалоговое окно

2. Запрещает ввод данных в поле Результат .

3. Связывает с кнопками Вычислить и Закрыть , а также с переключателями всплывающие подсказки

 

Нажатие кнопки Вычислить запускает на выполнение процедуру CommandButton1_Click

 

Определяет, какой переключатель выбран. В зависимости от выбранного переключателя производит действие над выбранными в списке числами. Найденное число выводится в поле Результат

 

Нажатие кнопки Закрыть запускает на выполнение процедуру CommandButton2_Click

 

Закрывает диалоговое окно

 

Процедура нажатия кнопки «Вычислить» производит вычисления с элементами списка в зависимости от выбранной операции. Вводятся переменные n и i, где n играет роль счетчика числа выбранных элементов из списка, а i – вспомогательная переменная. Также вводятся переменные, которые будут содержать результат вычислений: сумма, произведение и среднее . Все полученные вычисления присваиваются переменной Результат , которая и выдается в текстовое поле.

 

Процедура нажатия кнопки Вычислить

 

Private Sub CommandButton1_Click ()

Dim i As Integer

Dim n As Integer

Dim Сумма As Double

Dim Произведение As Double

Dim Среднее As Double

Dim Результат As Double

' При выборе первого переключателя вычисляется сумма

If OptionButton1.Value = True Then

Сумма = 0

With ListBox1

For i = 0 To.ListCount – 1

If.selected(i)=true then

Сумма = Сумма +.List(i)

End if

Next i

End With

Результат = Сумма

End If

' При выборе второго переключателя вычисляется произведение выбранных элементов

If OptionButton2.Value = True Then

Произведение = 1

With ListBox1

For i = 0 To.ListCount – 1

If.Selected(i)=True Then

Произведение = Произведение *.List(i)

End if

Next i

End With

Результат = Произведение

End If

' При выборе третьего переключателя вычисляется среднее арифметическое

If OptionButton3.Value = True Then

Среднее = 0

n = 0

With ListBox1

For i =0 To.ListCount – 1

If.Selected(i)=True Then

n=n+1

Среднее = Среднее +.List(i)

End if

Next i

End With

Результат = Среднее /n

End If

' Полученное значение Результат выводится в текстовое поле

TextBox1.Text = CStr(Format(Результат, «Fixed»))

End Sub

 

Процедура нажатия кнопки «Закрыть»

 

Private Sub CommandButton2_Click()

UserForm1.Hide

End Sub

 

Процедура инициализации диалогового окна заключается в заполнении списка и выводе его на форме, организации всплывающих подсказок, запрещении ввода текста в поле результата на форме.

 

Private Sub UserForm_Initialize()

With ListBoxl

List = Array(1, 3, 4, 5, 6, 7, 8, 10)

Listlndex = 0 'начальная индексация массива

MultiSelect=fmMultiSelectMulti

End With

' Первоначальный выбор переключателя Сумма при инициализации диалогового окна и задание текста всплывающих подсказок у переключателей With OptionButton1.Value = True

ControlTipText ="Сумма выбранных элементов"

End With

OptionButton2.ControlTipText ="Произведение выбранных элементов"

OptionButton3.ControlTipText = «Среднее значение выбранных элементов»

' Поле Результат не доступно для пользователя

TextBox1.Enabled = False

' Назначение клавише <Enter> функции кнопки Вычислить и задание текста всплывающей подсказки

With CommandButton1

Default = True

ControlTipText = «Нахождение результата»

End With

' Назначение клавише <Esc> функции кнопки Закрыть и задание текста всплывающей подсказки

CommandButton2.Cancel = True

' Задание заголовка пользовательской формы

UserForm1.Caption = «Операции над элементами списка»

UserForm1.Show

End Sub

 

Примечание. Интересной особенностью приводимой процедуры инициализации UserForm_initialize является то, что заголовок диалогового окна вводится программно при помощи свойства Caption, а не вручную при помощи окна Properties.

Пример 23. Разработать программу нахождения среднего балла студентов, выбранных из списка в диалоговом окне «Средний балл». Список содержит фамилию студента и его средний балл (двумерный массив) (рис. 41).

 

 

Рис. 41. Разработанная форма примера 23 в рабочем состоянии

 

Дополнительно для каждого элемента управления следует прописать процедуры для осуществления всплывающих подсказок.

При выполнении задания опирайтесь на приводимые ниже примечания.

Примечание. Обратите внимание на то, что в отличие от примера 22 данный пример требует ввода двумерного списка: столбца фамилий и столбца оценок. Фактически разница заключается лишь в том, что в приведенном примере массив ListBoxl.List, отвечающий за список элементов, был одномерным, а в данном случае должен быть двумерным. Сделать это можно двумя способами:

непосредственно заполнить двумерный массив ListBoxl.List;

задать произвольный двумерный массив, а затем присвоить его значение для ListBoxl.List (см. п. 3.1 и 4.1).

Соответственно, для расчета среднего балла следует воспользоваться только элементами второго столбца массива, т. е. вторая координата массива ListBoxl.List должна быть фиксирована на 1 (если индексация массива положена с нуля) или на 2 (если индексация массива положена с 1).