Основы офисного программирования и язык VBA

       

ComboBox - комбинированный список


Комбинированный список - это элемент управления, соединяющий поле ввода с кнопкой и раскрывающимся списком. Работая с ним, пользователь может ввести значение непосредственно в поле ввода либо выбрать одно из значений в списке. Список состоит из строк данных. Данные в строке могут располагаться в одном или нескольких столбцах. Рассмотрим основные свойства объекта ComboBox.

  • ListCount определяет, сколько элементов находится в списке. Свойство доступно только для чтения и изменяется автоматически вместе с добавлением (удалением) элементов в список.
  • ListRows задает число одновременно видимых строк списка.
  • ListIndex задает номер выбранной строки; возможные значения от -1 до ListCount - 1, т. е. значение ListCount всегда на 1 больше максимального значения свойства ListIndex, так как нумерация строк начинается с 0. Если ни один элемент в списке не выбран, ListCount равно 0, а значением ListIndex будет -1.
  • ColumnCount определяет число столбцов в выводимом на экран списке; если оно равно 0, столбцы не выводятся, при значении -1 выводятся все столбцы.
  • ColumnWidths задает ширину каждого столбца для списков с несколькими столбцами. Значение этого свойства - строка, в которой размеры столбцов перечислены через точку с запятой. Пустое значение или -1 означают, что ширина столбца вычисляется автоматически, 0 - отсутствие столбца, значения > 0 задают ширину столбца в точках. Можно также рядом с числовым значением указывать другую единицу измерения. По умолчанию ширина столбца не меньше 1 дюйма (72 точек). Например, если значение ColumnCount (число столбцов) равно 4, а ширина всего окна списка 12 см, значение ColumnWidth вида "56; 112; 56; 112" устанавливает ширину первого и третьего столбцов - 56 точек (2 см), а второго и четвертого - 112 точек (4 см), то же разбиение можно получить, задав "2 cm; 4 cm; 2 cm; 4 cm". Если же задать "4 cm; 0;;8 cm", второго столбца на экране не будет, третий будет иметь минимальную вычисляемую ширину - 1 дюйм, а в четвертом будет видна лишь левая часть шириной около 5. 5 см (при этом появится горизонтальная полоса прокрутки).
    Отсутствие значения ( пустая строка) означает, что все столбцы имеют одинаковую ширину.
  • TextColumn задает номер столбца, видного пользователю. Нумерация столбцов начинается с 1. 0 означает, что будет виден только выбранный элемент из строки ListIndex. При значении 1 выводится первый столбец, чья ширина, установленная свойством ColumnWidths, больше 0.
  • BoundColumn указывает столбец со значением данных (свойством Value) в списке со многими столбцами. Если свойство равно 0, значением свойства Value будет номер ListIndex выбранной пользователем на экране строки. Если BoundColumn > 0, значение свойства Value берется из указанного столбца. Таким образом, пользователь может выбрать на экране один элемент, а в качестве значения этого выбора в программе можно задать другой. Например, список может содержать названия месяцев в первом столбце и их номера - во втором. Установив TextColumn = 1, а BoundColumn = 2, мы получим элемент, в котором пользователь выбирает месяц по названию, а программа получает в качестве значения объекта номер выбранного месяца.
  • Задать элементы списка можно программно, используя метод AddItem (например, в процедуре инициализации диалогового окна), либо установив при проектировании свойство RowSource. Его значение - строка, задающая диапазон ячеек Excel, из которых будут браться элементы списка. Например, следующие операторы задают список с 4 столбцами для элемента ComboBox1. Элементы этого списка берутся из ячеек b1:e6 текущего рабочего листа Excel:

    ComboBox1. ColumnCount = 4 ComboBox1. RowSource = "b1:e6"

  • List - двухмерный массив с элементами списка. Обращение к нему:

    объект. List (строка, столбец)

    а элементы этого массива имеют тип Variant. Нумерация строк и столбцов начинается с 0. Это свойство можно использовать для инициализации списка с несколькими столбцами в элементах управления ComboBox и ListBox. Допустим, на уровне модуля определен двухмерный массив строк ListItems (4, 3) , содержащий 3 столбца значений, которые мы хотим предложить пользователю для выбора.


    Тогда этот массив можно связать с комбинированным списком CBox в процедуре инициализации диалогового окна.

    Private Sub UserForm_Initialize () СBox. ColumnCount = 3 ' задание числа столбцов списка CBox. List () = ListItems ' присвоение значения списку End Sub

  • ListStyle определяет внешний вид списка. Если оно равно fmListStylePlain = 0, элементы списка выводятся в обычном виде без кнопок слева. Если же его значение - fmListStyleOption = 1, слева от каждого элемента списка выводится кнопка. Для списков с единственным выбором это кнопка-переключатель (OptionButton), а для списков с множественным выбором - кнопка-флажок (CheckBox). При выборе элемента в соответствующей кнопке появляется метка.
  • MatchRequired и MatchEntry определяют поведение комбинированного списка при вводе пользователем данных в поле ввода. Если MatchRequired равно True, вводимый пользователем текст может стать значением элемента, лишь когда он совпадает с одним из элементов списка. По умолчанию ему присвоено False, что не требует от вводимых пользователем данных совпадения с элементами списка. Свойству MatchEntry по умолчанию устанавливается 1, означающее, что при вводе пользователем очередного символа в списке ищется первый элемент, для которого введенное слово является префиксом и выводится в качестве значения. Если MatchEntry равно 0, поиск происходит по первой букве слова, т. е. при повторном выборе одной и той же буквы в качестве значений перебираются все элементы списка, начинающиеся на нее. При MatchEntry равном 2 список не реагирует на набираемый пользователем текст. Этот текст доступен через свойство Text.


События: AfterUpdate, BeforeDragOver, BeforeDropOrPaste, BeforeUpdate, Change, Click, DblClick, DropButtonClick, Enter, Error, Exit, KeyDown, KeyUp, KeyPress, MouseDown, MouseUp, MouseMove.

Методы: AddItem, Clear, Copy, Cut, DropDown, Move, Paste, RemoveItem, SetFocus, ZOrder.


Содержание раздела