Шестаков В.С. Расчет на ЭВМ нефтегазового оборудования. Учебное пособие для МНГ-2015 (811778), страница 14
Текст из файла (страница 14)
Нумерация в списке идет с нуля.Пример процедуры передачи выбранного элемента списка:Private Sub ComboBox1_Click()MsgBox ComboBox1.ListIndexEnd Sub72Использование элемента «Выключатель» (ToggleButton)Этот элемент имеет вид кнопки, отличием является то, чтокнопка имеет «защелку». После щелчка по выключателю он остается внажатом состоянии, повторный щелчок вернет выключатель в исходное состояние.
Выключатель имеет свойство Value, которое принимает значение True при нажатой кнопке и False – при отжатой. Пример,характеризующий работу выключателя:Private Sub ToggleButton1_Click()If ToggleButton1 ThenMsgBox "Выключатель включен"ElseMsgBox "Выключатель выключен"End IfEnd SubЭлемент «Счетчик» SpinButtonСлужит для передачи в программу на единицу изменяющихсязначений. Для передачи служит свойство Value.
Пример процедуры:Private Sub SpinButton1_Change()MsgBox SpinButton1End SubЭлемент «Полоса прокрутки» SpinButtonТак же, как и счетчик, он служит для передачи в программу целочисленных значений. Значения, как и в счетчике, можно менять наединицу с помощью кнопок управления или с помощью полосы прокрутки, потянув за бегунок. Для передачи служит свойство Value.Пример процедуры:Private Sub ScrollBar1_Change()MsgBox ScrollBar1.ValueEnd SubИспользование элемента «Рисунок» (Image)Элемент «Рисунок» позволяет выводить в форме рисунки. Длявывода необходимо в свойстве Picture выполнить щелчок по кнопке изагрузить нужный рисунок. Создание кода, реагирующего на событияОбычно в программе обрабатывают одно событие – щелчок поэлементу управления мышью (событие Click).
Для обработки,73т. е. что должно произойти после щелчка, пишут процедуру с соответствующими операторами. Для получения заготовки процедуры выполняется двойной щелчок мышью по элементу. В результате послещелчка по кнопке (имя кнопки CommandButton1) будет получена процедураPrivate Sub CommandButton1_Click()End SubВнутрь этой процедуры и могут быть вставлены все необходимые инструкции, реализующие решаемую задачу. Инициализация значений элементов управленияПри отображении формы требуется ввести значения полей,применяемых по умолчанию в момент вызова.
Инициализация выполняется с помощью процедуры обработки события формыInitialize. Отображение формыДля вызова формы из программы необходимо в нужном местевставить команду Show, например, Расчет.Show (в данном случаеформа имела имя «Расчет»). Удаление формы с экрана - закрытие формыЧтобы выгрузить форму, используется оператор Unload «имяформы» или «имя формы».Hide.Пока форма активна, вся работа проводится только с элементами, расположенными на ней. Для продолжения работы программыVisual Basic или завершения работы форму закрывают. Для этого необходимо с одним из элементов, например, с кнопкой связать командуUnload.
Для получения процедуры, в которую можно вставить команду Unload, необходимо опустить на UserForm кнопку и выполнить поней двойной щелчок, после чего появится процедураPrivate Sub CommandButton1_Click()End SubВ эту процедуру и вставляется строка Расчет.Hide или UnloadРасчет (в данном случае форма имела имя «Расчет»).742.5. Примеры программ Пример простейшей программы – вычисление площадиПоследовательность действий при решении будет следующей.1.
На листе «Лист1» располагаем вводные данные и готовим место для вывода результатов: увеличиваем ширину столбца А – навести курсор на линию между А иВ, нажать левую кнопку мыши и потянуть; объединяем в первой строке ячейки А1 и В1 – выделить мышью этиячейки и щелкнуть по кнопке «Объединить и поместить в центре» напанели «Форматирование»; вводим обозначение параметров и размеры сторон в видеАВ1Вычисление площади прямоугольника2Ширина прямоугольника3Длина прямоугольника4Площадь4102. Вызываем на экран панель Visual Basic: курсор мыши на любую из имеющихся панелей; щелчок правой кнопкой, щелчок по Visual Basic.3. Записываем заготовку для основной подпрограммы: щелчок по кнопке «Запись макроса» на панели Visual Basic; вписываем название основной процедуры «Прямоугольник» в окно«Имя макроса», щелчок по «ОК»; щелчок по кнопке «Остановить запись» на панели Visual Basic.4.
Переходим в окно редактора Visual Basic: щелчок по кнопке «Редактор» на панели Visual Basic; открываем окно проекта –View→Project Explorer (Вид→Окно проекта); щелчок по папке «Модули» (Modules); двойной щелчок по «Модуль1» (Module1).5. Выполняем набор с клавиатуры кода программы (в отдельныеподпрограммы выделен ввод данных и расчет, процедура «Прямоугольник» использована как общая для вызова остальных процедур, передача данных выполнена через аргументы).Option ExplicitSub Прямоугольник()75Dim A, BCall Ввод(A, B)Call Расчет(A, B)End SubSub Ввод (A, B)A = Worksheets("Лист1").Range("b2")B = Worksheets("Лист1").Range("b3")End SubSub Расчет(A, B)Dim SS=A*BWorksheets("Лист1").Range("b4") = SEnd Sub6.Выполняем отладку программы: компиляция - Debug→Compile VBAProject (Отладка→Компиляция) иустраняем обнаруженные ошибки; пошаговое выполнение – наводим курсор на основную программу (настроку Sub Прямоугольник), нажатиями кнопки F8 на клавиатуре прогоняем желтую полосу по всем строкам программы.
После завершенияотладки на листе Excelв ячейке "B4" должно появитьсязначение 40. При проверке процедуры «Ввод» после прохождения строки В=.., но еще до выхода из этой процедуры, т.е. полоса наEnd Sub, проверяем получаемые с листа Excel значения (наводим изадерживаем курсор на «А» - должно появиться желтое поле со значением А). При проверке процедуры «Расчет» аналогично проверяем, передаются ли значения переменных между подпрограммами.7.Устанавливаем кнопку управления для запуска программы: переходим из редактора на лист Excel (можно щелкнуть по значкуMicrosoft Excel строки задач Windows); вызываем на экран панель «Формы» (курсор на любую панель инструментов, щелчок правой кнопки мыши, щелчок левой кнопкой по строке«Формы»);щелчок по изображению кнопки на панели «Формы»;щелчок по свободному месту листа;в окне «Назначить макрос объекту» щелчок по наименованию«Прямоугольник»;щелчок по кнопке «ОК»;щелчок по полю внутри кнопки, удаляем «Кнопка1» и набираем слово«Расчет»;щелчок по листу Excel вне кнопки – должны исчезнуть маркеры вокругкнопки.768.Проверяем работу программы: наводим курсор на ячейку «В2» и с клавиатуры вводим 6, нажимаем“Enter”; щелчок по установленной кнопке «Расчет» - в ячейке «В4» должно появиться 60. Пример создания формы с элементами управленияВ данном примере рассмотрим создание формы, показанной нарис.
2.13. Для проверки работы формы и передачи данных вместо реальных вычислений в процедуру включены сообщения MsgBox.Последовательность действий будетследующей: перейти в окно редактора с листаExcel (щелчок по кнопке «Редактор»на панели «Visual Basic»);вывести окно свойств (нажать клавишуF4иличерезменю«View→Properties Window»);вставить форму (через меню «Insert»Рис.
2.13. Пример формы→ «UserForm»);задать форме имя «Параметры» (щелкнуть по полю ввода «Name», удалить название UserForm1 и ввести слово «Параметры»);задать надпись для верхней строки формы (щелкнуть по полю ввода«Caption», удалить название UserForm1 и ввести «Расчет параметровлебедки»);установить на форму рамку и задать ей свойства (щелкнуть по элементу«Frame» на панели элементов, навести курсор на форму, нажать левуюкнопку и, не отпуская ее, прорисовать рамку нужных размеров, в поле«Name» задать имя «Схема», в поле «Caption» ввести «Конструктивнаясхема лебедки»;установить переключатель внутрь рамки и задать ему свойства (щелкнуть по элементу «OptionButton» на панели элементов, навести курсорна форму, нажать левую кнопку и, не отпуская ее, прорисовать рамкунужных размеров, в поле «Name» задать имя «Однобарабанная», в поле«Caption» ввести «Однобарабанная»;аналогично установить второй переключатель с именем надписью«Двухбарабанная»;установить поле и задать ему свойства (щелкнуть по элементу «TextBox»на панели элементов, навести курсор на форму, нажать левую кнопку и,77не отпуская ее, прорисовать рамку нужных размеров, в поле «Name» задать имя «Усилие», в поле «Value» ввести 100 – это значение будет появляться в поле при загрузке формы ;аналогично установить второе поле с именем надписью «Скорость», созначением 2.5;установить надпись и задать ей свойства (щелкнуть по элементу «Label»на панели элементов, прорисовать рамку нужных размеров, в поле«Caption» ввести «Номинальная нагрузка на крюке, кН»;аналогично установить вторую надпись «Номинальная скорость, м/с»;установить флажок и задать ему свойства (щелкнуть по элементу«CheeckBox» на панели элементов, прорисовать рамку нужных размеров,в поле «Name» задать имя «Вывод», в поле «Caption» ввести «Выводпромежуточных результатов»;установить кнопку и задать ей свойства (щелкнуть по элементу«CommandButton» на панели элементов, прорисовать рамку нужныхразмеров, в поле «Name» задать имя «OK», в поле «Caption» ввести«OK»;выполнить двойной щелчок по кнопке «ОК» и дополнить процедуруследующими строками:Private Sub ОК_Click()If Однобарабанная.Value ThenMsgBox ("Принята конструктивная схема: 'Однобарабанная лебедка'")End IfIf Двухбарабанная.Value ThenMsgBox ("Принята конструктивная схема: 'Двухбарабанная лебедка'")End IfIf Вывод.Value ThenMsgBox ("Будет осуществлен вывод промежуточных данных")End IfMsgBox ("Введено усилие на крюке " & Усилие & " кН")MsgBox ("Введена номинальная скорость " & Скорость & " м/с")Настройка.Hide ‘Команда удаления формы с экранаEnd Sub вернуться на лист Excel (щелкнуть по кнопке Microsoft Excel в строкезадач Windows); вызвать панель «Элементы управления» и установить на лист кнопку; щелкнуть по кнопке «Свойства» на панели «Элементы управления» изадать свойства кнопке (если у кнопки нет маркеров, то необходимо поней щелкнуть, а затем в поле «Name» задать имя «Вызов», в поле78«Caption» ввести «Вызов формы»; щелкнуть по кнопке «Исходный текст» на панели «Элементы управления» и добавить строку вызова формы Параметры.Schow, в результатепроцедура, которая вызывается кнопкой, будет иметь видPrivate Sub Вызов_формы_Click()Параметры.ShowEnd Sub щелкнуть по кнопке «Выход из режима конструктора» на панели «Элементы управления» (маркеры вокруг кнопки должны исчезнуть); щелкнуть по установленной на листе Excel кнопке – на экране должнапоявиться форма, приведенная на рис.