Сделай Сам Свою Работу на 5

Компоненты VBA и их размещение на форме

 

Пользовательская форма служит для размещения компонентов на ней, сама по себе она редко представляет собой интерес при работе с программами.

VBA предоставляет стандартный набор компонентов для работы с данными различных типов. Чтобы разместить компоненты на форму используется стандартная панель, которая становится видимой при создании новой формы. Панель называется ToolBox и содержит условные обозначения всех компонентов, доступных для размещении на форме. Любой компонент может быть размещен на форме сколько угодно раз и иметь собственные настройки для работы. Если панель ToolBox по каким то причинам не появилась при создании формы или была закрыта нажатием на «крестик», ее можно вызвать через пункт меню View → ToolBox.

Названия и назначение компонентов приведены в таблице 16.

Таблица 16

Название компонента Назначение компонента
Label Надпись, текст, который пользователь не может изменять в процессе выполнения программы
TextBox Поле для ввода и редактирования текста, в том числе и пользователем во время выполнения программы
ComboBox Комбинированный список записей, значений.
ListBox Список значений
ChekBox Поля для включения или отключения, флажки.
OptionButton Группа переключателей для выбора одного элемента из группы.
ToggleButton Кнопка, которая остается нажатой, если Вы ее выбираете. Чтобы выключить эту кнопку, необходимо нажать ее еще раз.
Frame Область для тематического объединения компонентов с названием области
CommandButton Кнопка для задания действий, совершающихся при нажатии на нее.
TabStrip Элемент, позволяющий создавать несколько страниц с одинаковыми компонентами на них.
Multipage Элемент, позволяющий создавать несколько страниц с разными компонентами на них.
ScrollBar Полоса прокрутки для непрерывно изменяющихся или дискретных, но многочисленных параметров.
SpinButton Счетчик. Используется для последовательного выбора или просмотра дискретных значений, перебирая их по одному.
Image Элемент для отображения картинки, которая может реагировать на различные события, например, на нажатие определенной кнопки мыши.
RefEdit Текстовое поле с кнопкой в правой части. При нажатии на эту кнопку форма, на которой размещен этот элемент управления, "спрячется", а пользователю будет предоставлена возможность выбрать одну ячейку Excel или диапазон ячеек. После того, как пользователь завершит выбор, он опять вернется в окно формы, а в RefEdit будет помещена информация об адресе выбранного диапазона. Такой же адрес, конечно, можно вводить и вручную.

 



Размещать компоненты на полотне формы можно как угодно, но для того, чтобы их размещение было согласованным (выровненным) можно использовать форматирование. Форматирование размещения компонентов можно осуществлять с помощью меню Format или с помощью панели инструментов UserForm.

На панели инструментов UserForm располагаются те же функции, что и в меню Format.

Рис. 55. Инструменты панели UserForm

 

Обозначения рисунка 55:

1 – позволяет расположить компонент на переднем плане, в том случае, когда компоненты располагаются один на другом. Например, при расположении функциональных компонентов на фрейме или на многостраничных компонентах;

2 – действие, обратное первому, т.е. позволяет расположить компонент позади всех остальных, расположенных в одной области с ним;

3 – позволяет сгруппировать компоненты для совместного перемещения их при редактировании. Выбрать с помощью мыши сразу несколько элементов управления не составит труда, для этого нужно всего лишь удерживать клавишу Ctrl и выбирать мышью нужные компоненты. Однако этот метод оказывается трудоемким в том случае, когда приходится постоянно работать с одним и тем же набором элементов управления как с отдельной единицей. Объединив все эти элементы управления в группу, вы избавляетесь от необходимости выбирать все эти элементы управления каждый раз, когда приходится с ними что-то делать, и тем самым исключаете возможные при таком выборе ошибки. Пример сгруппированных элементов показан на рисунке 56.

Рис. 56. Сгруппированные элементы, расположенные на одном фрейме

 

4 – разгруппировывает элементы;

5 – кнопка-выпадающее меню (рис. 57), которое содержит варианты выравнивания Lefts – все компоненты перемещаются по горизонтали и будут иметь крайние левые точки на одной вертикальной линии, Rights – то же, только выравнивание по крайним правым точкам, Tops – выравнивание по верхним точкам, которые будут расположены на одной горизонтальной линии, Bottoms – то же по нижним точкам. Значения Centers и Middles размещают компоненты в седине формы по вертикали и горизонтали соответственно. Пункт to Grid привязывает компоненты к точкам сетки, если до этого они не были привязаны.

Рис. 57. Меню выравнивания

 

6 – кнопка-выпадающее меню имеет два пункта Horizontally и Vertically. При выборе этих пунктов меню компонент перемещается в центр формы по горизонтали или вертикали соответственно.

7 – кнопка-выпадающее меню имеет три пункта меню, первый Width выравнивает ширину выбранных компонентов по самому широкому из них, второй Height выравнивает высоту выбранных компонентов по самому высокому из них, третий Both выравнивает ширину и высоту выбранных компонентов одновременно по самому крупному из них.

Примечание: нельзя выравнивать компоненты, расположенные друг на друге, например, компонент Frame и CommandButton.

8 – изменяет масштаб изображения компонентов на форме.

Рассмотрим более подробно компоненты и их свойства.

Label – это самый простой элемент управления, обозначающая надпись — область формы, в которой выводится какой-то текст. (рис. 58)

 

Рис. 58. Элемент Label

 

Пользователь не может изменять этот текст, его можно изменить только в процессе редактирования программы. Чаще всего элемент управления Label используется как строка состояния с объяснением того, что сейчас произошло/происходит/должен сделать пользователь и т.п. или для обозначения полей ввода, выпадающих меню, списков и т.д., этот элемент управления может использоваться и как пояснение для других элементов управления, таких, как скроллинг или счетчик.

Самое главное свойство элемента управления Label — это Caption, тот текст, который будет выводиться на форме. Большая часть остальных свойств относится к форматированию этого текста или настройке внешнего вида этого элемента управления.

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

TextBox - текстовое поле (рис. 59) - один из самых часто используемых элементов управления. Текстовое поле используется для ввода каких-либо текстовых данных пользователем, для вывода пользователю текстовых данных с возможностью их редактирования, для вывода пользователю текстовых данных с возможностью копирования и печати, но без возможности изменения.

 

Рис. 59. Элементы Label со значением «Имя» и TextBox с текстом «Александра»

 

Наиболее часто используемые свойства этого элемента управления:

Value (или Text, эти два свойства для текстового поля идентичны) — то текстовое значение, которое содержится в этом поле. Используется для занесения исходного значения и для приема значения, введенного пользователем, в строковую переменную.

Чтобы ввести текст в поле нужно использовать одно из этих свойств, ввод данных может выглядеть следующим образом:

TextBox1.Text = “Москва”

При этом, если в поле TextBox уже было введено какое-либо значение, то оно заменится вновь введенным.

AutoSize — возможность для текстового поля автоматически менять свой размер, чтобы вместить весь текст. Использовать не рекомендуется, так как может нарушиться весь дизайн вашей формы.

ControlSource — ссылка на источник текстовых данных для поля. Может ссылаться, например, на ячейку в Excel, на поле в Recordset и т.п. При изменении пользователем данных в текстовом поле автоматически изменится значение на источнике, определенном в ControlSource.

ControlTipText — текст всплывающей подсказки, которая появляется, когда пользователь наводит указатель мыши на элемент управления. Рекомендуется к заполнению для всех элементов управления (для самой формы не предусмотрена).

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

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

MaxLength — максимальная длина значения, которое можно ввести в поле. Иногда можно использовать свойство AutoTab — при достижении определенного количества символов управление автоматически передается другому элементу управления.

MultiLine — можно ли использовать в текстовом поле несколько строк или необходимо обойтись одной. Если вам нужно текстовое поле для приема одного короткого значения, подумайте, нельзя ли вместо него обойтись функцией InputBox.

PasswordChar — указать, за каким символом будут "прятаться" вводимые пользователем значения. Используется, конечно, при вводе пароля.

ScrollBars — будут ли показаны горизонтальная и вертикальная полосы прокрутки (в любом сочетании). Если текст может быть большим, без них не обойтись.

WordWrap — настоятельно рекомендуется включать в тех ситуациях, когда значение MultiLine стоит в True. В этом случае будет производиться автоматический переход на новую строку при достижении границы текстового поля.

Остальные свойства по большей части относятся к оформлению текстового поля и его содержания, а также настройкам редактирования.

Главное событие для текстового поля — это событие Change (то есть изменение содержания поля). Обычно на это событие привязывается проверка вводимых пользователем значений или синхронизация введенного значения с другими элементами управления (например, сделать доступной кнопку, изменить текст надписи и т.п.)

Элемент ComboBox - комбинированный список (рис. 60), используется достаточно часто. Этот элемент управления представляет собой выпадающий список и позволяет пользователю выбирать введенные заранее значения из списка или вводить значения самостоятельно (хотя это можно запретить).

Комбинированный список можно использовать в различных случаях, например, когда пользователю необходимо выбрать одно или несколько значений из списка или когда список позиций для выбора необходимо формировать динамически на основании данных из источника (базы данных, листа Excel и т.п.).

 

Рис. 60

 

К сожалению, заполнение списка значений через окно свойств невозможно (можно задать только одно значение в поле свойства Text), для этой цели используют специальный метод AddItem(), заполнение задается программным путем. Обычно он помещается в обработчик события Initialize для формы. Применение его может выглядеть так:

Private Sub UserForm_Initialize()

ComboBox1.AddItem "Технолог"

ComboBox1.AddItem "Конструктор"

ComboBox1.AddItem "Инженер"

ComboBox1.AddItem "Бухгалтер"

End Sub

Результат выполнения листинга представлен на рисунке 61.

 

Рис. 61

 

Метод AddItem имеет два аргумента, один из которых обязательный, строкового типа и имеет смысл значения добавляемой строки в список. Аргумент varIndex необязательный, он числового типа и используется для определения положения элемента в списке, но он не может превышать значения ListCount и поэтому для начальной загрузки ComboBox не подходит.

Наиболее часто используемые свойства комбинированного списка: ColumnCount, ColumnWidth, BoundColumn, ColumnHeads, RowSource — свойства, которые применяются при работе со списками из нескольких столбцов.

MatchEntry — будут ли при вводе пользователем первых символов значения выбраться подходящие позиции из списка. возможность очень удобная, рекомендуется сохранить значение, которое используется по умолчанию.

MatchRequired — разрешается ли пользователю вводить то значение, которого нет в списке. По умолчанию False, то есть разрешено.

Value (или Text) — позволяет программным способом установить выбранное значение в списке или вернуть выбранное/введенное пользователем значение.

Остальные свойства (AutoSize, Enabled, Locked, ControlText, ControlTipText, MaxLength) — применяются точно так же, как и для TextBox.

Главное событие для комбинированного списка — Change, то же, что и для TextBox. Обычно в обработчике этого события проверяются введенные пользователем значения, эти значения переносятся в текстовое поле или ListBox (если нужно дать пользователю возможность выбрать несколько значений, поскольку свойства MultiSelect у ComboBox нет) и т.п.

Элемент ListBox представляет собой обычный список значений. Все значения видны сразу, если они помещаются в окне, если размер окна меньше списка значений, то в окне появляется полоса прокрутки и с ее помощью осуществляется доступ к записям списка (рис. 62).

 

Рис. 62. Элемент ListBox

 

В отличие от элемента ComboBox в списке элемента ListBox можно выбирать несколько записей одновременно.

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

Обычно ListBox используется как промежуточное средство отображения введенных/выбранных пользователем через ComboBox значений (или любых других списков, например, списков выбранных файлов), как средство редактирования списка значений, сформированных вышеуказанным образом или полученных из базы данных (для этого можно рядом с ListBox разместить кнопки «Удалить» или «Изменить»).

Основные свойства, методы и события у ListBox — те же, что и у ComboBox. Главное отличие — то, что имеется свойство MultiSelect, которое позволяет пользователю выбирать несколько значений. По умолчанию это свойство отключено.

Среди методов элемента ListBox наиболее часто применяются AddItem – добавление записи, работает также как и для ComboBox, RemoveItem – удаляет запись из списка, аргументом является порядковый номер записи (Index), Clear – удаление всех записей списка.

Элемент ChekBox - флажки или кнопки с фиксацией, они используются для выбора невзаимоисключающих вариантов, как правило, если этих вариантов немного.

Для того, чтобы воспользоваться этим элементом, нужно разместить их на форме столько сколько предполагается вариантов. Удобно размещать эти элементы на фрейме, давая фрейму тематическое обозначение, которое позволяет понять общее назначение вариантов. При размещении элементов ChekBox на форме они будут независимы и обрабатываться каждый из них будет в отдельности, это и подразумевается невзаимоисключением, т.е. возможностью выбора нескольких из них одновременно. Если необходимо каким-либо образом установить связь другого характера между элементами ChekBox, то это должно быть выполнено программным путем. Вариант возможного размещения элементов ChekBox на форме и в области фрейма показан на рисунке 63.

 

Рис. 63. Элементы ChekBox, расположенные на фрейме

 

Рассмотрим наиболее часто используемые свойства элемента ChekBox.

Caption — надпись справа от флажка, которая объясняет, что выбирается этим флажком;

TripleState — варианты возможных состояний флажка. Если значение этого свойства установлено в False (по умолчанию), то флажок может принимать только два состояния: установлен и нет. Если для TripleState установить значение True, то появляется третье значение: Null, когда установлена "серая галка". Такое значение часто используется, например, когда это значение было установлено не пользователем, а предложено ему по умолчанию;

Value — само состояние флажка. Может принимать значения True (флажок установлен), False (снят) и Null — "серый флажок" (когда свойство TripleState установлено в True).

Главное событие — Change, т.е. изменение состояния. Это событие используется в том случае, если сразу при изменении состояния флажка должно произойти какое-то действие. Отмечу, что действия эти не всегда должны быть заметны пользователю т.е. сразу отображаться на экране, они могут носить характер промежуточных или подготовительных изменений данных для дальнейших действий.

Элемент OptionButton служит для обеспечения выбора в случае использования взаимоисключающих вариантов. Например, если программа представляет собой тест и пользователь должен выбрать единственно правильный ответ, или, рассматривая пример рисунка 63, пользователь должен сделать окончательный выбор средства передвижения на определенный переезд (невозможно одновременно находиться в поезде и в самолете).

 

Рис. 64. Пример использования ChekBox и OptionButton

 

Элементы OptionButton также независимы друг от друга, хотя на самом деле независимыми они быть не могут. Зависимость различных элементов, объединенных одним вопросом, осуществляется размещением элементов на форме. Так, например, элементы OptionButton, расположенные на одном фрейме будут связаны между собой, но независимы от элементов, расположенных на форме за пределами фрейма или в области другого фрейма.

Элемент ToggleButton выглядит как кнопка, которая при нажатии становится "нажатой", а при повторном нажатии отключается. У нее могут быть те же два (или три, в соответствии со свойством TripleState) состояния, что и у CheckBox. Свойства и методы — те же самые. Единственное отличие — в восприятии их пользователем. Обычно ToggleButton воспринимается пользователем как переход в какой-то режим или начало выполнения продолжительного действия.

Элемент Frame уже упоминался ранее — это просто рамка, которая выделяет прямоугольную область на форме и позволяет организовать элементы управления. Помещенные внутрь рамки переключатели считаются взаимоисключающими, остальные элементы управления ведут себя точно так же, хотя иногда бывает полезно с точки зрения наглядности свести вместе под одной рамкой, к примеру, набор флажков. При желании рамку можно сделать невидимой, установив для свойства BorderStyle значение 1 и убрав значение свойства Caption.

Элемент CommandButton используется очень часто, т.к. представляет собой многофункциональную кнопку, имеющую привычное для пользователя изображение.

В большинстве форм обязательно будет по крайней мере две кнопки: Отмена (Cancel) и OK. По нажатию кнопки Отмена форма должна закрыться, по нажатию кнопки OK должно выполниться то действие, ради чего создавалась эта форма (рис. 65).

 

Рис. 65

 

Главное событие для кнопки — это, конечно, Click. Как правило, к этому событию и привязывается тот программный код, ради которого создавалась кнопка. Чтобы перейти к обработчику события Click достаточно двойного щелчка мыши по кнопке в режиме редактирования и вы перейдете в редактор программного кода этого события.

Самые важные свойства кнопки:

Cancel — если для него установить значение True, то это значит, что кнопка будет нажиматься при нажатии на клавишу <Esc>. Как правило, на такие кнопки помещаются надписи типа "Отмена", "Выход", "Вернуться в окно приложения". Однако кроме назначения клавише <Esc>, ничего больше этой кнопке такое свойство не дает. Необходимо будет еще добавить код в обработчик события Click, например, такой:

Unload Me

Caption — надпись, которая будет на кнопке;

Default — такая кнопка будет считаться нажатой, если пользователь нажал на клавишу <Enter>, а фокус находился в другом месте формы (но не на другой кнопке), т.е. активным был другой элемент. Обычно такие кнопки являются главными, по которым выполняется действие, ради которого создавалась форма (печать отчета, занесение информации в базу данных, отправка почты и т.п.);

Picture — если просто надпись вас не устраивает, можно назначить кнопке рисунок;

TakeFocusOnClick — будет ли передаваться управление этой кнопке при нажатии на нее. По умолчанию True.

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

Похожий, но более гибкий, элемент MultiPage. Этот элемент также позволяет создавать несколько окон-вкладок, но элементы на каждой из них могут быть различные со своим собственным наполнением.

Свойства и события у этих элементов управления практически идентичны. Самые важные свойства:

MultiRow — можно ли будет использовать несколько рядов вкладок.

TabOrientation — где будут расположены вкладки (по умолчанию — сверху).

Value — номер вкладки, которая открыта в настоящий момент (нумерация начинается с 0).

 

Рис. 66

 

Главное событие — Change (то есть переход между вкладками). К нему можно привязать. например, проверку уже введенных пользователем значений или выдачу предупреждений.

Пример этих элементов показан на рисунке 66, варианты рисунка а и б позволяют увидеть разницу между элементами, т.к. демонстрируют разные вкладки.

Разница элементов заключается также в том, что у элемента MultiPage можно изменять названия вкладок, а у элемента TabStrip – нельзя.

Элемент полоса прокрутки ScrollBar чаще всего встречается в текстовых полях, когда введенный текст полностью на экране не умещается. Но можно использовать ScrollBar и как отдельный элемент управления (пользователи часто называют его "ползунок") — для выбора пользователем какого-то значения из диапазона (рис. 67). Обычно такой элемент управления используется для выбора плавно меняющихся значений — например, уровня громкости, яркости, сжатия, приоритета и т.п.

Рис. 67

 

Главное событие для этого элемента управления — Change. Главные свойства выглядят так:

Max и Min — максимальное и минимальные значения, которые можно задать при помощи этого элемента управления. Возможный диапазон — от -32 767 до +32 767. При этом максимальное значение вполне может быть меньше минимального — просто ползунок придется тянуть в обратную сторону.

LargeChange и SmallChange — какими шагами будет двигаться ползунок при перемещении его пользователем (путем щелчка на полосе ниже ползунка или при нажатии на кнопку направления соответственно).

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

ProportionalThumb — определяет размер ползунка: будет ли он пропорционален размеру полосы прокрутки (по умолчанию) или фиксированного размера.

Value — главное свойство этого элемента управления. Определяет положение ползунка и то значение, которое будет возвращать этот элемент управления программе.

Как правило, применение ползунка без отображения выбранной при помощи него информации не очень приветствуется пользователями. В самом простом варианте то, что выбрано при помощи ползунка, просто отображается в текстовой надписи:

Private Sub ScrollBar1_Change()

Label1.Caption = ScrollBar1.Value

End Sub

В более сложном варианте пользователю можно будет выбирать — использовать ли ползунок или вводить значение в тестовом поле. В этом случае в событии Change для текстового поля необходимо предусмотреть проверку вводимых пользователем значений и обратную связь с ползунком.

Элемент управления SpinButton — эта та же полоса прокрутки, лишенная самой полосы и ползунка. SpinButton используется в тех ситуациях, когда диапазон выбираемых значений совсем небольшой (например, надо выбрать количество копий для печати отчета). Все свойства, которые есть у SpinButton, совпадают со свойствами ScrollBar.

Элемент Image позволяет отобразить на форме рисунок в одном из распространенных форматов, который будет реагировать на щелчок мышью (а может просто использоваться для украшения формы) (рис. 68).

 

Рис. 68. Использование элемента Image и свойства Picture для элемента CommandButton

 

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

Есть еще две альтернативы элементу Image - применение свойства Picture для элементов управления Label или CommandButton. Функциональность получается практически одинаковая.

При рассмотрении всех вариантов следует выбирать тот, который наиболее подходит в данном случае.

При использовании элемента управления Image само изображение копируется внутрь документа и внешний его файл больше не нужен? Это очень удобное свойство, т.к. не придется заботиться о файле рисунка и его местонахождении при переносе программы на другой компьютер или просто в другую папку.

Главное событие элемента управления Image — событие Click. Главные свойства:

Picture — позволяет выбрать файл изображения, помещаемый в рамку элемента;

PictureAlignment — позволяет выбрать расположение изображения в отведенной ему области. По умолчанию рисунок будет расположен по центру;

PictureSizeMode — позволяет выбрать режим растяжения/уменьшения элемента в случае, если он не точно соответствует размеру области;

PictureTiling — размножать ли маленький рисунок, чтобы он покрыл все отведенную ему область (делать "черепицу").

Элемент RefEdit. Это довольно специфический элемент управления, применять его можно только для MS Excel, т.к. он предназначен для работы с ячейками.

 

Рис. 69. Последовательность заполнения элемента RefEdit

 

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

Такой же адрес, конечно, можно вводить и вручную. Главное свойство этого элемента управления — Value.

Кроме стандартных элементов, расположенных на панели ToolBox есть еще целый ряд элементов, которые можно использовать при оформлении форм, но они или редко используются или носят специфический характер.

Чтобы получить доступ к этим элементам нужно щелкнуть правой кнопкой мыши на пустом участке панели ToolBox и в появившемся меню выбрать пункт AdditionalControls (дополнительные элементы управления) (рис. 70.). Далее в открывшемся окне из списка можно выбирать любые элементы, учитывая, однако, что некоторые из них могут быть специально предназначены для создания программ только для одного из приложений Microsoft Office, например для MS Access. Также следует учесть, что при применении нестандартных элементов управления при переносе программы (файла Office) на другой компьютер вам потребуется обеспечить на нем наличие необходимых библиотек.

 

Рис. 70

 

Рассмотрим один из наиболее интересных и полезных нестандартных элементов, который все же часто встречается в различных программах, Calendar.

При выборе нового элемента из списка дополнительных он появится на панели ToolBox и оттуда его можно перенести на форму. На форме календарь отображается полностью. Это может оказаться не совсем удобным, т.к. календарь будет занимать много места, поэтому удобно будет разместить его в отдельном окне, а на форме поместить элемент Label, при нажатии на который форма с элементом календаря будет открываться и в ней можно будет выбрать нужную дату, а по закрытии формы с календарем, она будет отображаться через элемент Label.

Рассмотрим пошагово этот пример.

Создаем новую форму и помещаем на нее элемент Label. Назовем форму «Дата», а свойство Caption элемента Label заполним какой-нибудь датой, чтобы пользователь понимал, для чего этот элемент размещен на форме (рис. 71). Также разместим на форме кнопку СommandButton, которая понадобится для доступа к форме с календарем, изменим ее свойство Caption так, чтобы пользователь мог понять назначение этой кнопки. Рекомендую также изменить шрифт элементов на более крупный и жирный, т.к. на данной форме кроме этих элементов других не будет и с точки зрения дизайна следует сделать их крупнее и ярче.

 

Рис. 71

 

Добавляем вторую форму, изменяем ее свойство Caption на «Календарь». Выбираем из списка дополнительных элементов управления элемент Календарь (в разных версиях и модификациях VisualBasic он может называться по-разному, на русском или английском языках).

 

Рис. 72

 

После того, как элемент Календарь появился на панели ToolBox, размещаем его на форме. На вторую форму также добавим кнопку, которую нужно будет нажать после того как дата будет выбрана (рис. 72).

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

Для начала организуем вызов формы Календарь при нажатии кнопки Выбрать дату. Для этого в режиме редактирования нажмем дважды на левую кнопку мыши, наведя ее на кнопку. При этом откроется редактор с готовым пустым шаблоном события, в котором запишем код вызова формы:

Private Sub CommandButton1_Click()

UserForm2.Show

End Sub

Рис. 73

 

Далее переходим ко второй форме и на событие нажатие кнопки Готово запишем код присваивания значения свойства Value элемента Календарь, в котором содержится выбранная дата, свойству Caption элемента Label1 первой формы. Затем записываем код закрытия формы:

Private Sub CommandButton1_Click()

UserForm1.Label1.Caption = UserForm2.Calendar1.Value

UserForm2.Hide

End Sub

 

Рис. 74

 

Теперь можно запускать программу и проверять результат. При запуске программы появляется первая форма, в которой в элементе Label1 содержится дата, введенная по умолчанию в свойство Caption (рис. 73).

Нажимаем кнопку Выбрать дату, при этом на экране появляется форма Календарь (рис. 74).

 

Рис. 75

На форме Календарь выбираем дату и нажимаем на кнопку Готово, в результате форма Календарь закрывается и дата отображается на форме Дата (рис.75).


Литература

 

1. Excel VBA: приемы программирования http://www.codenet.ru/progr/vbasic/vbaexcel/ (Февраль 2012)

2. Microsoft Visual Basic 5. Шаг за шагом: практ. пособие // пер. с английского - М.: Издательство ЭКОМ. - 2-ое изд., исправленное. - 1998. - 432 с.

3. Visual Basic 6.0 / пер. с англ. - СПб.: БХВ - Санкт-Петербург, 1999. - 992 с.

4. Акулич И.Л. Математическое программирование в примерах и задачах: уч. пособ. / И.Л. Акулич. – 2-е изд., испр и доп. – М.: Высшая школа, 1993. – 336 с.

5. Ашманов С.А. Линейное программирование / С.А. Ашманов. – М.: Наука, 1980. – 340 с.

6. Воронцов С.И. Microsoft Visual Basic 5.0: ActiveX, DLL, Internet и другие.../, С.И. Воронцов, И.А. Храмов. - М.: "СОЛОН" – 1998. - 301 с.

7. Горанский Г.К. Автоматизация технического нормирования работ на металлорежущих станках с помощью ЭВМ / Г.К. Горанский, Е.В. Владимиров, Л.Н. Ламбин. М.: Машиностроение, 1970 – 222c.

8. Демидова Л.А. программирование в среде Visual Basic for Applications: Практикум / Л.А. Демидова, А.Н. Пылькин. – М.: Горячая линия – Телеком, 2004. – 175 с.

9. Каммингс С. VBA для чайников / С. Каммингс. – 3-е изд.: Пер. с английского. – М.: Издательский дом «Вильямс», 2001. – 448 с.

10. Кузьменко В.Г. Программирование на VBA 2002 / В.Г. Кузьменко. – М.: ООО «Бином-пресс», - 2003. – 880 с.

11. Курс лекций по VBA: электронный учебник < http://www.mini-soft.ru/soft/vba/> (Февраль 2012)

12. Левин А.Ш. Excel - это очень просто! / А.Ш. Левин. – Питер, 2008. – 108 с.

13. Мединов О. Ю. Excel : самоучитель / О. Ю. Мединов. - СПб. [и др.] : Питер, 2009. - 208 с.

14. Мельников П. П. Компьютерные технологии в экономике : учеб. пособие / П. П. Мельников. - М. : Кнорус, 2009. - 224 с.

15. Мур М. Изучи сам Visual Basic 4 сегодня /М. Мур, Дж. Н. Фернандес // Пер. с англ.; худ. обл. М.В.Драко. - Мн.: ООО "Попурри", 1997. - 528 с.

16. Роман С. Использование макросов в Excel / С. Роман. – 2-е изд. – Спб.: Питер, 2004. – 507 с.

17. Трусов А. Ф. Excel 2007 для менеджеров и экономистов. Логистические, производственные и оптимизационные расчеты / А. Ф. Трусов. - СПб. [и др.] : Питер, 2009. - 256 с.

18. Харрис М. Освой самостоятельно программирование для Microsoft Excel 2000 за 21 день: пер. с англ. : уч. пос. /М. Харрис. – М.: Издательский дом «Вильямс», 2000. – 880 с.

19. Якушев А.И. Взаимозаменяемость, стандартизация и технические измере­ния. Учебник для втузов / А.И. Якушев, Л.Н. Воронцов, Н.М. Фе­дотов // 6-е изд., перераб. и дополн. – М.: Машиностроение, 1987. – 352с.

 



©2015- 2019 stydopedia.ru Все материалы защищены законодательством РФ.