Шестаков В.С. Расчет на ЭВМ нефтегазового оборудования. Учебное пособие для МНГ-2015 (811778), страница 10
Текст из файла (страница 10)
Расчет суммы S элементов массива А до тех пор, пока S < So и число элементов меньше 21S=0For I=1 To 20S=S+A(I)N=IIf S>So Then Exit ForNext II=1While I <= 20 And S<SoS=S+A(I)N=II=I+1Wend50I=1DoS=S+A(I)If S>So Then Exit DoN=II=I+1Loop While I <= 20 Ввод данных в процедуры и вывод результатовВвод в процедуры Visual Basic данных, необходимых для проведения расчетов, может быть выполнен двумя способами: с листа Excel; элементами Visual Basic.Большинство программ решения инженерных задач средствамиExcel строятся таким образом, что первый способ используется какосновной, а второй используется как вспомогательный, например, длявыбора вариантов работы программы.Аналогично осуществляется вывод результатов расчетов: на лист Excel; элементами Visual Basic.В данном пособии рассматривается только минимальный наборсредств, используемых для передачи данных с листа в программу иобратно.
Более подробная информация приводится в [3, 4].Передача данных с листа Excel в процедуры Visual BasicЕсли программа работает с несколькими ячейками, располагаемыми на разных листах нескольких книг Excel, то адреса ячеек необходимо указывать с наименованием книг и листов. При обращении кячейке из других приложений, например, из текстового редактораMicrosoft Word необходимо также указать и само приложение Excel.Занести в переменную значение с листа Excel можно с помощьюоператора присваивания:Имя переменной =Application.Workbook(“наименование файла”) .Worksheets (“наименование листа”).Range(“Адрес ячейки”).Value,где Имя переменной – обозначение переменной в программе,Application - приложение Excel,Workbook - рабочая книга,Worksheets -лист,Range – диапазон ячеек на листе.Value – метод, обеспечивающий доступ к содержимому ячейки.Адрес ячейки указывается в формате “наименование столбца иномер cтроки”.Если данные в подпрограмму передаются только из текущей книги Excel, то приложение и рабочая книга не указываются.
Метод«Value» можно использовать по умолчанию и слово «Value» можно воператоре присваивания не указывать. Таким образом, при работе51только с текущей книгой строка передачи данных с листа «Лист1» вподпрограмму будет иметь очень простой вид:A= Worksheets(“Лист1”).Range(”C5”), илиA= Worksheets(“Лист1”).Cells(5,3) – передача значения из ячейки C5 в переменную А.При использовании Cells в скобках на первом месте находитсяномер строки, а на втором – номер столбца.
Вместо численных значений для указания номера строки и столбца можно использовать переменные и выражения, например, при заполнении 20 элементов массива А значениями, расположенными с 6 по 26 строку столбца С листа«Лист1», можно использовать следующий фрагмент:For i=1 Тo 20A(i)= Worksheets(“Лист1”).Cells(i+5,3)Next iПри работе только с текущим листом можно опустить и ссылкуна лист, но в этом случае нельзя будет запускать подпрограмму дляотладки из редактора, поэтому такое использование передачи данныхне рекомендуется.Передача данных из процедур Visual Basic на лист ExcelВыполняется аналогичным образом, только здесь в оператореприсваивания слева стоит адрес ячейки.Worksheets(«Лист1”).Range(”С6”)=В, илиWorksheets (“Лист1”).Cells(6,3)=В – передача значения в ячейкуC6 листа «Лист1» значения из переменной В.Вывод информации элементами Visual BasicВ инженерных задачах вывод результатов элементами VisualBasic используется как вспомогательный,для вывода контрольных результатов и аварийных сообщений.
Для вывода в VisualBasic предусмотрена функция MsgBox, приобращении к которой на экран выводитсядиалоговое окно (рис. 2.3), содержащее соРис. 2.3. Вид окнаобщение, устанавливается режим ожиданияMsgBoxнажатия кнопки пользователем.Пример: MsgBox(“Значение переменной X=”+str(X))52Ввод информации элементами Visual BasicДанные в программу можно вводить не только с листа Excel, но ичерез специальное диалоговое окно, вызываемое функцией InputBox.Диалоговое окно содержит сообщение и поле ввода, устанавливаетрежим ожидания ввода текста пользователем или нажатия кнопки, азатем возвращает значение типа String, содержащее текст, введенныйв поле.Пример процедуры с этой функцией (вызовкнопкойCommandButton1):Private Sub СommandButton1_Click()Message = ”Введите передаточное число редуктора”Title = ”Ввод передаточного числа”Default = ”1”My = InputBox(Message, Title, Default)End SubПри выполнении этой процедуры на экран выведется показанное нарис.
2.4 окно. Для ввода новогозначения числа необходимоудалить находящееся в строкечисло и набрать с клавиатурыновое значение. После щелчкапо «ОК» введенное значениебудет передано переменной Myи далее может быть использоваРис. 2.4. Окно ввода данныхно в расчетах. При выборе«Cancel» – в переменной останется имевшееся ранее число.Число вводится в текстовом виде, поэтому для последующих вычислений его необходимо преобразовать в числовой вид, используяфункцию Val. Учет в программах места хранения процедурПри расположении процедур, из которых составляется программа в различных модулях, необходимо предусматривать следующее: все передаваемые между процедурами переменные должныбыть описаны как глобальные (со словом Public, см. далее); при использовании переменной в процедурах, расположенныхна других страницах или модулях, перед ее именем указывается имялиста или модуля, где выполнено ее описание; при вызове процедуры, расположенной на странице другого53листа, перед именем вызываемой процедуры необходимо указать наименование листа; при вызове процедуры, расположенной в модуле, из процедуры, расположенной на странице листа, перед именем вызываемойпроцедуры необходимо указать наименование модуля; при вызове процедуры, расположенной на странице листа, изпроцедуры, расположенной в модуле, перед именем вызываемой процедуры необходимо указать наименование листа.Пример программы проверки передачи данных междупроцедурами:Option Explicit‘Инструкции расположены на странице Лист1Public S1, S2, S3, SM1Private Sub CommandButton1_Click()S1 = 1 : SM1 = 11Модуль1.rasM1 ‘Вызов процедуры rasM1 из модуля1Лист2.ras21‘Вызов процедуры ras21, расположенной в Лист2End SubSub ras11()MsgBox («Из процедуры с Лист2 на Лист1 передано « + Str(S2))End SubSub ras12()MsgBox(«Из Модуль1 передано»+Str(Модуль1.sm2))End SubOption Explicit‘Инструкции расположены на странице Лист2Private Sub CommandButton2_Click()Лист1.S2 = 2Лист1.ras11‘Вызов процедуры ras11, расположенной в Лист1End SubSub ras21()MsgBox («Из процедуры c Лист1 передано « + Str(Лист1.S1))End SubSub ras22()MsgBox («Из Модуль1 передано « + Str(Модуль1.sm3))End SubOption Explicit‘Инструкции расположены в модуле 1Public sm2, sm3Sub Макрос1()sm2 = 12sm3 = 20Лист1.ras12‘Вызов процедуры ras12, расположенной в Лист1Лист2.ras22‘Вызов процедуры ras22, расположенной в Лист254End SubSub rasM1()MsgBox(«Из процедуры с Лист1 в Модуль1 передано» + Str(Лист1.SM1))End Sub2.3.
Создание, редактирование и запуск программДля создания, редактирования и запуска программ предусмотренасреда разработки Visual Basic Editor (редактор). Вызов редактораосуществляется из панели управления Visual Basic (см. рис. 2.5)соответствующей кнопкой. НаРис. 2.5. Панель Visual Basicэкран выведется окно редактора(рис. 2.6). Программы хранятся в программных модулях. Для перемещения нужного модуля в окно программ необходимо щелкнутьмышью по его наименованию в окне проекта.Рис. 2.6. Вид окна редактора Visual Basic Editor55Если при входе в редактор на экран не выведется окно проекта, тонужно его открыть через пункт меню «View»→ «Proect Explorer».Программные модули могут храниться в специальной папке с наименованием «Модули» или располагаться на специально отводимой для этого странице, связанной с листом Excel. Каждый листимеет свою страницу.
Чтобы перейти на нужную страницу, необходимо выполнить двойной щелчок по наименованию листа в окне проекта.Создание процедур модулей, располагаемых в папке модулей и настраницах, несколько различается между собой. Для получения начальной заготовки кода процедуры, располагаемой на странице, чащевсего выполняют двойной щелчок по элементу управления, а для получения процедур папки модулей обычно записывают макросы иливыполняют командой «Вставка модуля» в редакторе. Создание процедур путем записи макросаДействия, выполняемые пользователем при работе в Excel (например, ввод данных, копирование и т.п.), можно перевести в программный код на Visual Basic путем записи макроса.
Полученный таким способом простейший макросможет послужить основой для создания более сложной программы обработки данных. Для записи макросавыполните щелчок по кнопке «Запись макроса» на панели «VisualBasic» – на экран выведется панель,показанная на рис. 2.7. Вместо слова«Макрос1» необходимо ввести наРис. 2.7. Окно записи макросаименование подпрограммы и выполнить щелчок мышью по кнопке«ОК», после чего начнется запись макроса.