Главная » Просмотр файлов » Метод. по подпрограммам (vba)

Метод. по подпрограммам (vba) (811586), страница 2

Файл №811586 Метод. по подпрограммам (vba) (М.Д. Силин, А.Н. Любин - Процедуры и функции в языке программирования VISUAL BASIC FOR APPLICATION) 2 страницаМетод. по подпрограммам (vba) (811586) страница 22020-08-27СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

листинг к примеру 2.По мнению авторов, данная форма вызова процедуры менее предпочтительна, чем первая, так как в ней отсутствует оператор вызоваи между именем функции и её аргументами нет разделителя (скобок), что затрудняет читаемость программного кода.Аргументом процедуры, как уже было отмечено, может бытьи массив. Рассмотрим примеры с использованием массивов.12Пример 2. Заданы два массива А(5) и В(3).

Написать программу для определения суммы и количества нулевых элементов,имеющихся в заданных массивов.Листинг программы к примеру 2 представлен на рис.5.Рисунок 5.- Листинг программы к примеру 2.Пояснения к программе.Вызывающая, основная процедура имеет имя MACCИВ см.рис.5. Все используемые в процедуре имена массивов должны бытьзаписаны через запятые после оператора Dim, который отводитпамять под заданные массивы, в соответствии с их максимальнойразмерностью указанной в круглых скобках массивов.

KOL - имя13процедуры типа Function, X и N – её формальные входные аргументы. При передачи на их места фактических аргументов в видемассивов с именами А и В после имени массива можно ставитькруглые скобки – А(), а можно и не ставить их – В, см. приведённый листинг к рассматриваемому примеру 2 на рис.5.Задание типа формальных и фактических аргументовТип формальных аргументов можно не задавать, как в приведённых выше примерах, и тогда считается, что они имеют тип данных Variant [1].Объявление каждого формального аргумента имеет следующий синтаксис:Имя аргумента As тип данныхтип данных – тип данных, определенный пользователем.При задании формальному аргументу определённого типаданных, например Integer, соответствующему фактическому аргументу должен быть определён тот же тип данных, в данном случаеInteger, с помощью оператора Dim, как в примере 3, см. рис.

6.Пример 3.Рисунок 6.- Задание типа формальных и фактических аргументов.14В примере 3 формальному аргументу N задан тип данных Integer,а соответствующему фактическому аргументу К, с помощью оператора Dim, определён тот же тип данных- Integer.1.2.2. ПРОЦЕДУРА ТИПА SUBПроцедура типа Sub (подпрограмма) — универсальная процедура для выполнения каких-либо действий при программировании.Зачем же тогда нужны функции? Функцию в основном используюттогда, когда её значение требуется вставлять практически в любоеместо программного кода, часто в громоздкие арифметические выражения.

В этом случае использование функции гораздо проще,чем процедуры.Процедурой типа Sub формально называется фрагмент текстана языке VBA (программный код), заключенный между ключевымисловами Sub и End Sub, которые определяют начало и конец процедуры.Для объявления процедуры типа Sub используется следующий синтаксис.Sub Имя (список формальных аргументов)( операторы)End SubКлючевое слово Sub определяет процедуру типа Sub (подпрограмма),указывает на начало процедуры.Далее задаётсяИмя_процедуры. Имя должно быть уникальным, и задано согласноправилам задания имён переменных в языке VBA.В круглых скобках указывается список формальных аргументов. Это то- же самое понятие, что и для функций, и правила их задания и использования те же, включая и задание их типа. В случаеесли список формальных аргументов отсутствует, то скобки остаются.15Вызов процедуры типа SubВызов процедуры типа Sub осуществляется с помощью оператора Call (вызвать).

Синтаксис такого вызова следующий.Call Имя (список фактические аргументы)После имени вызываемой процедуры в круглых скобках указывается список фактических аргументов. Это то - же самое понятие, что и для функции. Правила их задания и использования теже,включая и задание их типа. В случае если список формальных аргументов отсутствует, то скобки остаются.Пример 4. Заданы два массива А(5) и В(3). Написать программу определения для каждого из заданных массивов суммы иколичества положительных элементов.

Вычислить общее среднееарифметическое значение положительных элементов для указанных массивов.Листинг программы к примеру 4 представлен на рис. 7.Пояснения к программе.Процедура с именем СУМКОЛ определяет для массива сумму и количество элементов больших нуля. В результате двукратного обращения к подпрограмме определяются сумма SA и количество KA элементов больших нуля для массива А и соответственноSB и KB для массива В. В основной, вызывающей процедуре (программе) с именем Сред_знач вычисляется SR – среднее арифметическое значение всех элементов больших нуля, находящихся в массивах А и В.

Ввод данных в массивы А и В организован с помощьюфункции InputBox.16Рисунок 7.- Листинг программы к примеру 4.Ввод массивов можно организовать с таблицы EXCEL, а также и вывод в неё результатов, см. следующий код, для примера 4представленный на рис. 8.17Рисунок 8.- Листинг программы к примеру 4,с вводом - выводом в таблицу EXCEL.Ввод данных для кода, представленного на рис.

8 может бытьвыполнен в таблице EXCEL следующим образом см. рис. 9.18Рисунок 9.- Ввод данных в таблице EXCEL.После запуска кода и завершения его работы в таблице EXCEL будет распечатан результат в виде представленном на рис. 10.Рисунок 10.- Результат работы программы в таблице EXCEL.Рассмотренный вариант ввода-вывода в таблице EXCEL удобен при отладке программ.Есть еще одна форма ввода массивов удобная, в частности,для отладки процедур.

При работе с массивами бывает полезноприменять следующую функцию.имя массива Array (список параметров)Эта функция создает массив типа Variant. Аргумент в скобках представляет разделенный запятыми список значений, присваиваемых элементам массива.В представленном на рис. 11 примере с помощью функцииArray вводиться массив А(5) с численными значениями его элементов -2, 4, 3, 8, 10. Процедура с именем М1 подсчитывает суммуS задаваемого количества N элементов. При первом обращении кпроцедуре М1 подсчитывается сумма четырёх элементов массива А19при втором – двух, результаты выводятся с помощью функцииMsgBox соответственно в переменные SYM4 и SYM2 см .

рис. 11.Рисунок 11.- Процедура с использование функции Array.1.3. СПОСОБЫ ПЕРЕДАЧИ АРГУМЕНТОВ В ПРОЦЕДУРЫСуществуют два способа передачи аргументов в процедуры:по ссылке (по умолчанию) и по значению.При передаче аргументов по ссылке передается только адреспамяти. Это означает, что если процедура изменяет значение в любом из аргументов, то исходные данные также изменяются. Этотспособ работает по умолчанию, и он реализован во всех приведённых выше примерах. Рассмотрим пример передачи аргументов поссылке, см. рис.

12. Здесь в вызывающей процедуре переменной Nприсваивается значение 10. Затем вызывается процедура с именемССЫЛКА, причём переменная N передаётся в неё в качестве входного фактического аргумента. В процедуре с именем ССЫЛКАпереданный фактический аргумент N занимает место формальногоаргумента Х и увеличивается на значение 20, т.е. становиться рав-20ным 30-ти и с этим значение переменная N возвращается уже в качестве выходного фактического аргумента в вызывающую процедуру и выводится в окно функции MsgBox с численным значениемравным 30.Рисунок 12.- Процедура с передачей в неё аргументов по ссылке.При передаче аргумента по значению VBA делает копию передаваемого аргумента и передает эту копию процедуре. Если процедура изменяет значение в аргументе, передаваемом по значению,то изменяется только его копия, а исходное значение аргумента неизменяется.

Для организации передачи аргумента по значению используется ключевое слово ByVal, которое ставиться перед именемформального аргумента при объявлении процедуры.Рассмотрим предыдущий пример см. рис. 12 с использованиемв нём способа передачи аргумента по значению, см. рис. 13.

В результате выполнения кода представленного на рис. 13 значение переменной N, в вызывающей процедуре MAIL, не изменяется, остаётся равным исходному значению 10.21Рисунок 13.- Процедура с передачей в неё аргументов по значению.Если в качестве аргумента используется переменная, тип данных которой определил программист, то такой аргумент можно передавать только по ссылке.Следует заметить, что чаще используется способ передачи аргументов по ссылке, который, как уже было сказано, в VBA используется по умолчанию, хотя, если есть желание, можно задать иявно используя ключевое слово ByRef, аналогично использованию– ByVal.Переменное число аргументов в процедуреПроцедура может иметь и переменное число аргументов. Длясоздания таких процедур используется ключевое словоParamArray, которое определяет массив, содержащий необходимое количество значений аргументов.

Ключевое слово ParamArrayв списке процедуры указывается только один раз и обязательно вконце списка. При этом тип массива не указывается, так как типвсегда должен быть – Variant, а этот тип устанавливается по умол-22чанию. На рис. 14 представлен пример использования процедуры спеременным числом аргументов.Рисунок 14.- Процедура с использованиепеременного числа аргументов.Обязательные и необязательные аргументы процедурАргументы процедур могут быть обязательными и необязательными аргументы.

Допускается, что все аргументы являютсянеобязательными. Необязательные аргументы можно передаватьпри вызове процедур, а можно и опускать. Для необязательных аргументов, его значение принимается по умолчанию. Оно передаетсяв процедуру, даже если при вызове процедуры данный аргументбыл опущен. Для указания того, что данный аргумент является необязательным, используется ключевое слово Otional.Otional Аргумент As Type = defaultvalueЗдесь defaultvalue – значение данного аргумента, которое будет использоваться по умолчанию.

Все необязательные элементыуказываются после обязательных в конце списка аргументов. Следует обратить внимание на то, что ключевые слова ParamArray и23Otional являются взаимоисключающими, в списке параметров может присутствовать только одно и них. Использование необязательного аргумента понятно из следующего примера, см. рис. 15.Рисунок 15.- Процедура с использованиенеобязательного аргумента.1.4.

Характеристики

Тип файла
PDF-файл
Размер
1,02 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6294
Авторов
на СтудИзбе
314
Средний доход
с одного платного файла
Обучение Подробнее