Задания
На VBA составить пользовательские формы для решения следующих задач:
1. из трех заданных чисел A, B, C найти число, ближайшее по значению к заданному числу М. Исходные данные и результат размещаются в элементах управления поле пользовательской формы. Все поля должны иметь соответствующие надписи.
2. вычислить приближенное значение arctg(x) в заданной точке х по формуле
с заданной точностью е;
Исходные число Х и результат У разместить в элементах управления поле пользовательской формы, сделав соответствующие надписи полей. Точность е выбирать из списка элемента управления поле со списком.
3. найти НОД или НОК двух натуральных чисел m и n. Исходные числа и результат разместить в элементах управление поле пользовательской формы. Для выбора операции НОД или НОК использовать элемент управления переключатель;
4. найти среднее арифметическое и/или среднее геометрическое положительных чисел заданного массива. Исходный массив чисел разместить в диапазоне В1:С10 на листе 1 Excel. Для выбора действия использовать элемент управления флажок. Результат разместить в элементах управления поле пользовательской формы.
5. найти коэффициенты первой производной многочлена Pn(x). Коэффициенты исходного многочлена Pn(x) выбирать из выделенного диапазона листа 1 Excel, коэффициенты полученного многочлена разместить в строке листа 1, начиная с ячейки Е1.
6. в заданном тексте найти слова заданной длины n. Исходный текст задается в элементе управления поле, число n выбирать из элемента управления счетчик, найденные слова разместить в списке пользовательской формы.
Для создания новой пользовательской формы необходимо, находясь в среде VBA выполнить команду Insert(Вcтавить)/UserForm(Форма) и затем в появившемся окне формы установить его размеры, название (свойство Caption) и необходимые параметры.
Одновременно со вставкой формы откроется панель элементов управления (Toolbox) - открыть ее можно также, воспользовавшись меню View/Toolbox. Элементы управления из панели (всего их 16) необходимо разместить на форме. Сама панель выглядит так:
Создание диалогового окна. После выбора необходимых элементов управления для ввода и вывода данных а также кнопок в пользовательской форме будет создано диалоговое окно. Как правило, одна из кнопок будет выбрана в качестве "ОК", то есть с ее нажатием пользователем будет начато выполнение программы - ввод исходных данных, их обработка, и вывод результатов. Для изменения принятой по умолчанию подписи кнопки CommandButton1 на необходимую "ОК" можно переопределить свойство Caption в диалоговом окне Свойства (Properties), которое открывается при нажатии на кнопку. Однако проще будет изменить подпись непосредственно в самой конпке, одним кликом мыши выделив ее, а вторым - открыв соответствующее поле для редактирования. В окне Свойства (Properties) можно также изменить подпись (переопределить свойство Caption) непосредственной всей формы с принятого по умолчанию значения UserForm1 на необходимое.
После размещения в форме элементов управления необходимо написать процедуру обработки события нажатия кнопки ОК. Для этого ее необходимо дважды кликнуть мышью. Активизируется модуль UserForml, в котором будут введены "операторные скобки" Процедуры обработки: Private Sub CommandButtonl Click ()... End Sub.
Обратите внимание, что
· для ввода данных, как правило, используются элементы управления поле (TextBox), поле со списком (ComboBox), список (ListBox), счетчик (SpinButton), полоса прокрутки (ScrollBar).
· Для отображения на форму выходных данных применяются элементы управления поле, поле со списком, список.
· Надписи на форме осуществляются посредством элемента управления надпись (Label).
· Для выбора действий используются элементы управления флажок (CheckBox), переключатель (OptionButton), выключатель (ToggleButton).
· Выполнение и завершение макросов осуществляется посредством элемента управления кнопка (CommandButton).
· Для вставки рисунков используется элемент управления рисунок (Image).
· Для работы с вкладками и страницами используются элементы управления набор вкладок (TabStrip) и набор страниц (MultiPage)
Указания по выполнению заданий:
# | Способ ввода/вывода данных | Пример |
2. | Поле (TextBox) | x=Val(TextBox1.value) 'воод данных из поля TextBox1.value =Str(y) 'вывод данных в поле Для того, чтобы сделать соответствующую подпись поля, необходимо перенести на форму элемент управления Надпись (Label) и изменить его свойство Caption в диалоговом окне Свойства (Properties) или изменить подпись непосредственно в самой Надписи. |
2. | Поле со списком (ComboBox) | Для ввода данных в список необходимо до "основной" подпрограммы (то есть той, которая "обрабатывает" нажатие на кнопку "ОК") ввести еще одну - вводящую данные в поле со списком. Ниже представлены два варианта - в одном из них данные берутся из ячеек l6, l7 и l8 листа "5.7", а во втором - вычисляются программно. Private Sub UserForm_Activate() Worksheets.Item("5.7").Activate Dim e As Range Set e = Range("l6:l8") Dim a As Variant For Each a In e ComboBox1.AddItem (a) Next a End Sub Или Private Sub UserForm_Initialize() ComboBox1.Clear For i = 1 To 3 ComboBox1.AddItem (10 ^ (-i)) Next i End Sub e=Val(ComboBox1.value)'ввод данных из поля со списком |
3. | Переключатель (OptionButton) | If OptionButton1.Value=True Then... указание. при объединениии двух переключателей в рамку (Frame) сначала разместите на форме рамку. |
4. | Флажок (CheckBox) | If CheckBox1.Value = True Then... |
4. | Исходный массив чисел разместить в диапазоне (Range) В1:С10 на листе 1 | Set A = Worksheets("Лист1").Range("B1:C10") |
5. | Коэффициенты исходного многочлена выбирать из выделенного диапазона (поле для ввода диапазона - RefEdit) | Set A = Range(RefEdit1.Text) Или A = Range(RefEdit1.Value) |
6. | Cчетчик (SpinButton) | Private Sub SpinButton1_Change() TextBox2.Value = SpinButton1.Value End Sub |
6. | Cписок (ListBox) | ListBox1.AddItem (i) |