SlideShare a Scribd company logo
1 of 19
ВыходВыход
Тема:Тема:
Преподаватель Косарь О.В.Преподаватель Косарь О.В.
Определение
ПроцедураПроцедура — это последователь-
ность операторов VBA,
расположенная в модуле VBA.
Модуль может включать любое
количество процедур.
ВыходВыход
Формат :
[Private | Public] [Static]
Sub имя
([список_аргументов])
[инструкции]
[Exit Sub]
[инструкции]
End Sub
ВыходВыход
• PrivatePrivate — указывает на то, что процедура
доступна только для других процедур в том же
модуле.
• PublicPublic — указывает на то, что процедура
доступна для всех остальных процедур во всех
модулях рабочей книги.
• StaticStatic — указывает на то, что переменные
процедуры сохраняются после окончания
процедуры.
ВыходВыход
продолжение
• SubSub— обозначает начало процедуры.
• имяимя — любое корректное название процедуры.
• список_аргументовсписок_аргументов — список переменных,
которые передаются в процедуру. Для
разделения используется запятая. Если
аргументов нет, то указываются пустые скобки.
• инструкцииинструкции — корректные инструкции VBA.
• Exit SubExit Sub — вызывает немедленный выход из
процедуры до ее формального завершения.
• End SubEnd Sub — указывает на окончание
процедуры.
ВыходВыход
Вызов процедуры из другой процедуры
Существует два оператора обращения к
подпрограмме:
Call название
(фактические_параметры)
название фактические_параметры
ВыходВыход
Например
Sub MySub()
MonthNum = InputBox("Введите номер
месяца")
Call UpdateSheet(MonthNum)
...[код]...
End Sub
Sub UpdateSheet(MonthSeq)
...[код]...
End Sub
ВыходВыход
Вызов процедуры из другого модуля
В одном модуле не может быть двух
процедур с одинаковыми именами. Но в
разных модулях можно давать одинаковые
имена. Тогда для вызова такой процедуры
перед названием записывают название
модуля где она находится и точку.
ВыходВыход
Предположим, вы создали процедуры с
названием MySub в двух модулях: Module1 и
Module2. Если требуется, чтобы процедура
MySub в Module2 вызывала MySub из
Module1, то используется один из
следующих операторов:
Module1.MySub
Call Module1.MySub
ВыходВыход
Передача аргументов в процедуры
АргументыАргументы обеспечивают процедуру
данными, использующимися в ее
инструкциях.
Аргумент может передавать
следующие данные:
• переменная;
• константа;
• массив;
• объект.
ВыходВыход
Передача аргументов
Существует два способа передачи
аргументов в процедуру: по ссылкессылке и по
значениюзначению.
При передаче аргумента по ссылке
(используется по умолчанию) в процедуру
передается адрес переменной. При
передаче аргумента по значению в
процедуру передается копия переменной.
Следовательно, изменение аргумента в
процедуре не вызывает изменения
исходной переменной.
ВыходВыход
Пример
Sub Main()
MyValue = 10
Call Process(MyValue)
MsgBox MyValue
End Sub
Sub Process(YourValue)
YourValue = YourValue * 10
End Sub
ВыходВыход
Если необходимо, чтобы вызываемая
процедура не изменяла переменные,
полученные как аргументы, то их
необходимо передавать по значению, а
не по ссылке. Для этого добавляется
перед аргументом ключевое слово
ByValByVal. Тогда вызываемая процедура
будет управлять копией переданных
данных.
ВыходВыход
Например
Sub Process(ByVal YourValue}
YourValue = YourValue * 10
End Sub
ВыходВыход
Функции.
Тема:
ВыходВыход
Объявление функции
[Public | Private] [Static]
Function имя
([список_аргументов]) [As
тип]
[инструкции]
[имя = выражение]
[Exit Function]
[инструкции]
[имя = выражение]
End Function
ВыходВыход
Функция с аргументом массивом
Function SuinArray(List) As
Double
Dim Item As Variant
SumArray = 0
For Each Item In List
SumArray = SumArray + Item
Next Item
End Function
ВыходВыход
Вызов этой функции
Sub MakeList()
Dim Nums(1 To 100) As Double
Dim i as Integer
For i = 1 To 100
Nums(i) = Rnd * 1000
Next i
MsgBox SumArray (Nums)
End Sub
ВыходВыход

More Related Content

What's hot

Рефлексия в java
Рефлексия в javaРефлексия в java
Рефлексия в javaUnguryan Vitaliy
 
Введение в Spring
Введение в SpringВведение в Spring
Введение в SpringUnguryan Vitaliy
 
Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Unguryan Vitaliy
 
Java. Наследование.
Java. Наследование.Java. Наследование.
Java. Наследование.Unguryan Vitaliy
 
Системы контроля версий
Системы контроля версийСистемы контроля версий
Системы контроля версийUnguryan Vitaliy
 
Оптимизация интерактивного тестирования с использованием метрики Покрытие кода
Оптимизация интерактивного тестирования с использованием метрики Покрытие кодаОптимизация интерактивного тестирования с использованием метрики Покрытие кода
Оптимизация интерактивного тестирования с использованием метрики Покрытие кодаSPB SQA Group
 
Java. Полиморфизм.
Java. Полиморфизм.Java. Полиморфизм.
Java. Полиморфизм.Unguryan Vitaliy
 
Введение в hibernate
Введение в hibernateВведение в hibernate
Введение в hibernateUnguryan Vitaliy
 
Java. Работа с файловой системой. Потоки ввода-вывода.
Java. Работа с файловой системой. Потоки ввода-вывода.Java. Работа с файловой системой. Потоки ввода-вывода.
Java. Работа с файловой системой. Потоки ввода-вывода.Unguryan Vitaliy
 
Lecture1: Introduction to Parallel Computing
Lecture1: Introduction to  Parallel ComputingLecture1: Introduction to  Parallel Computing
Lecture1: Introduction to Parallel ComputingAndrii Rodionov
 
Java Core. Lecture# 5. Concurrency.
Java Core. Lecture# 5. Concurrency.Java Core. Lecture# 5. Concurrency.
Java Core. Lecture# 5. Concurrency.Anton Moiseenko
 
лабораторная работа № 3
лабораторная работа № 3лабораторная работа № 3
лабораторная работа № 3Gulnaz Shakirova
 
Java Core. Lecture# 3. Part# 3. Multithreading.
Java Core. Lecture# 3. Part# 3. Multithreading.Java Core. Lecture# 3. Part# 3. Multithreading.
Java Core. Lecture# 3. Part# 3. Multithreading.Anton Moiseenko
 
Java Core. Lecture# 3. Part# 2. Exceptions.
Java Core. Lecture# 3. Part# 2. Exceptions.Java Core. Lecture# 3. Part# 2. Exceptions.
Java Core. Lecture# 3. Part# 2. Exceptions.Anton Moiseenko
 
Java. Строки. Класс String.
Java. Строки. Класс String.Java. Строки. Класс String.
Java. Строки. Класс String.Unguryan Vitaliy
 
Unit тестирование
Unit тестированиеUnit тестирование
Unit тестированиеMaxim Volchenko
 

What's hot (20)

Рефлексия в java
Рефлексия в javaРефлексия в java
Рефлексия в java
 
Сервлеты
СервлетыСервлеты
Сервлеты
 
Введение в Spring
Введение в SpringВведение в Spring
Введение в Spring
 
Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.
 
Java. Наследование.
Java. Наследование.Java. Наследование.
Java. Наследование.
 
Java. Методы
Java. Методы Java. Методы
Java. Методы
 
java 8
java 8java 8
java 8
 
Системы контроля версий
Системы контроля версийСистемы контроля версий
Системы контроля версий
 
Оптимизация интерактивного тестирования с использованием метрики Покрытие кода
Оптимизация интерактивного тестирования с использованием метрики Покрытие кодаОптимизация интерактивного тестирования с использованием метрики Покрытие кода
Оптимизация интерактивного тестирования с использованием метрики Покрытие кода
 
Java. Полиморфизм.
Java. Полиморфизм.Java. Полиморфизм.
Java. Полиморфизм.
 
Введение в hibernate
Введение в hibernateВведение в hibernate
Введение в hibernate
 
Java. Работа с файловой системой. Потоки ввода-вывода.
Java. Работа с файловой системой. Потоки ввода-вывода.Java. Работа с файловой системой. Потоки ввода-вывода.
Java. Работа с файловой системой. Потоки ввода-вывода.
 
Lecture1: Introduction to Parallel Computing
Lecture1: Introduction to  Parallel ComputingLecture1: Introduction to  Parallel Computing
Lecture1: Introduction to Parallel Computing
 
Java Core. Lecture# 5. Concurrency.
Java Core. Lecture# 5. Concurrency.Java Core. Lecture# 5. Concurrency.
Java Core. Lecture# 5. Concurrency.
 
лабораторная работа № 3
лабораторная работа № 3лабораторная работа № 3
лабораторная работа № 3
 
Rx android
Rx androidRx android
Rx android
 
Java Core. Lecture# 3. Part# 3. Multithreading.
Java Core. Lecture# 3. Part# 3. Multithreading.Java Core. Lecture# 3. Part# 3. Multithreading.
Java Core. Lecture# 3. Part# 3. Multithreading.
 
Java Core. Lecture# 3. Part# 2. Exceptions.
Java Core. Lecture# 3. Part# 2. Exceptions.Java Core. Lecture# 3. Part# 2. Exceptions.
Java Core. Lecture# 3. Part# 2. Exceptions.
 
Java. Строки. Класс String.
Java. Строки. Класс String.Java. Строки. Класс String.
Java. Строки. Класс String.
 
Unit тестирование
Unit тестированиеUnit тестирование
Unit тестирование
 

Viewers also liked

Viewers also liked (11)

LW_brochure_lq_NL
LW_brochure_lq_NLLW_brochure_lq_NL
LW_brochure_lq_NL
 
Auto Retrato_Suzely_Paranaíba
Auto Retrato_Suzely_ParanaíbaAuto Retrato_Suzely_Paranaíba
Auto Retrato_Suzely_Paranaíba
 
헝셩그룹 -900270- 알고리즘 기업분석 보고서
헝셩그룹 -900270- 알고리즘 기업분석 보고서헝셩그룹 -900270- 알고리즘 기업분석 보고서
헝셩그룹 -900270- 알고리즘 기업분석 보고서
 
Proyecto de alejandra
Proyecto de alejandraProyecto de alejandra
Proyecto de alejandra
 
Taller Remedial de Matemáticas
Taller Remedial de MatemáticasTaller Remedial de Matemáticas
Taller Remedial de Matemáticas
 
Tutorial de Popplet
Tutorial de PoppletTutorial de Popplet
Tutorial de Popplet
 
One Try India – Non Profit Organization
One Try India – Non Profit OrganizationOne Try India – Non Profit Organization
One Try India – Non Profit Organization
 
Animes muy girly
Animes muy girly Animes muy girly
Animes muy girly
 
Production schedule and resources
Production schedule and resources Production schedule and resources
Production schedule and resources
 
Decision table
Decision tableDecision table
Decision table
 
500 Demo Day Batch 19: OpenDoor
500 Demo Day Batch 19: OpenDoor500 Demo Day Batch 19: OpenDoor
500 Demo Day Batch 19: OpenDoor
 

Similar to Podprogram

Vba программы
Vba программыVba программы
Vba программыLidiKashka
 
операторы и выражения
операторы и выраженияоператоры и выражения
операторы и выраженияLidiKashka
 
Как пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на SwiftКак пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на SwiftAnton Loginov
 
C# Desktop. Занятие 16.
C# Desktop. Занятие 16.C# Desktop. Занятие 16.
C# Desktop. Занятие 16.Igor Shkulipa
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Javametaform
 
практика 1
практика 1практика 1
практика 1student_kai
 
Victor Kuliamin.CSEDays
Victor Kuliamin.CSEDaysVictor Kuliamin.CSEDays
Victor Kuliamin.CSEDaysLiloSEA
 
JUnit, дай пять!
JUnit, дай пять!JUnit, дай пять!
JUnit, дай пять!Dmitrii Tuchs
 
Референсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVCРеференсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVCAndrew Mayorov
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Javametaform
 
Subprograms in VHDL, Procedures in VHDL
Subprograms in VHDL, Procedures in VHDLSubprograms in VHDL, Procedures in VHDL
Subprograms in VHDL, Procedures in VHDLvitaliykulanov
 
Java Core. Lecture# 2. Classes & objects.
Java Core. Lecture# 2. Classes & objects.Java Core. Lecture# 2. Classes & objects.
Java Core. Lecture# 2. Classes & objects.Anton Moiseenko
 
Лекция 13. Многопоточность и GIL
Лекция 13. Многопоточность и GILЛекция 13. Многопоточность и GIL
Лекция 13. Многопоточность и GILRoman Brovko
 
АРК-ПЗ-1.pptx
АРК-ПЗ-1.pptxАРК-ПЗ-1.pptx
АРК-ПЗ-1.pptxrobete3065
 
Android - 02 - annotations, exceptions, io, generics
Android - 02 - annotations, exceptions, io, genericsAndroid - 02 - annotations, exceptions, io, generics
Android - 02 - annotations, exceptions, io, genericsNoveo
 

Similar to Podprogram (20)

Vba программы
Vba программыVba программы
Vba программы
 
операторы и выражения
операторы и выраженияоператоры и выражения
операторы и выражения
 
Как пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на SwiftКак пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на Swift
 
C# Desktop. Занятие 16.
C# Desktop. Занятие 16.C# Desktop. Занятие 16.
C# Desktop. Занятие 16.
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
 
практика 1
практика 1практика 1
практика 1
 
Victor Kuliamin.CSEDays
Victor Kuliamin.CSEDaysVictor Kuliamin.CSEDays
Victor Kuliamin.CSEDays
 
JUnit, дай пять!
JUnit, дай пять!JUnit, дай пять!
JUnit, дай пять!
 
алгоритмы и их виды
алгоритмы и их видыалгоритмы и их виды
алгоритмы и их виды
 
алгоритмы и их виды
алгоритмы и их видыалгоритмы и их виды
алгоритмы и их виды
 
Референсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVCРеференсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVC
 
алгоритмы и их виды
алгоритмы и их видыалгоритмы и их виды
алгоритмы и их виды
 
Unit тесты java
Unit тесты javaUnit тесты java
Unit тесты java
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
 
Subprograms in VHDL, Procedures in VHDL
Subprograms in VHDL, Procedures in VHDLSubprograms in VHDL, Procedures in VHDL
Subprograms in VHDL, Procedures in VHDL
 
Java Core. Lecture# 2. Classes & objects.
Java Core. Lecture# 2. Classes & objects.Java Core. Lecture# 2. Classes & objects.
Java Core. Lecture# 2. Classes & objects.
 
Лекция 13. Многопоточность и GIL
Лекция 13. Многопоточность и GILЛекция 13. Многопоточность и GIL
Лекция 13. Многопоточность и GIL
 
АРК-ПЗ-1.pptx
АРК-ПЗ-1.pptxАРК-ПЗ-1.pptx
АРК-ПЗ-1.pptx
 
Android - 02 - annotations, exceptions, io, generics
Android - 02 - annotations, exceptions, io, genericsAndroid - 02 - annotations, exceptions, io, generics
Android - 02 - annotations, exceptions, io, generics
 
Обзор Ruby
Обзор RubyОбзор Ruby
Обзор Ruby
 

More from LidiKashka

функции работы с датой и временем
функции работы с датой и временемфункции работы с датой и временем
функции работы с датой и временемLidiKashka
 
объекты Word
объекты Wordобъекты Word
объекты WordLidiKashka
 
объекты Excel
объекты Excelобъекты Excel
объекты ExcelLidiKashka
 
объекты и классы
объекты и классыобъекты и классы
объекты и классыLidiKashka
 
массивы
массивымассивы
массивыLidiKashka
 
встроен функции
встроен функциивстроен функции
встроен функцииLidiKashka
 

More from LidiKashka (8)

функции работы с датой и временем
функции работы с датой и временемфункции работы с датой и временем
функции работы с датой и временем
 
ооп
оопооп
ооп
 
объекты Word
объекты Wordобъекты Word
объекты Word
 
объекты Excel
объекты Excelобъекты Excel
объекты Excel
 
объекты и классы
объекты и классыобъекты и классы
объекты и классы
 
массивы
массивымассивы
массивы
 
записи
записизаписи
записи
 
встроен функции
встроен функциивстроен функции
встроен функции
 

Podprogram

  • 1.
  • 3. Определение ПроцедураПроцедура — это последователь- ность операторов VBA, расположенная в модуле VBA. Модуль может включать любое количество процедур. ВыходВыход
  • 4. Формат : [Private | Public] [Static] Sub имя ([список_аргументов]) [инструкции] [Exit Sub] [инструкции] End Sub ВыходВыход
  • 5. • PrivatePrivate — указывает на то, что процедура доступна только для других процедур в том же модуле. • PublicPublic — указывает на то, что процедура доступна для всех остальных процедур во всех модулях рабочей книги. • StaticStatic — указывает на то, что переменные процедуры сохраняются после окончания процедуры. ВыходВыход
  • 6. продолжение • SubSub— обозначает начало процедуры. • имяимя — любое корректное название процедуры. • список_аргументовсписок_аргументов — список переменных, которые передаются в процедуру. Для разделения используется запятая. Если аргументов нет, то указываются пустые скобки. • инструкцииинструкции — корректные инструкции VBA. • Exit SubExit Sub — вызывает немедленный выход из процедуры до ее формального завершения. • End SubEnd Sub — указывает на окончание процедуры. ВыходВыход
  • 7. Вызов процедуры из другой процедуры Существует два оператора обращения к подпрограмме: Call название (фактические_параметры) название фактические_параметры ВыходВыход
  • 8. Например Sub MySub() MonthNum = InputBox("Введите номер месяца") Call UpdateSheet(MonthNum) ...[код]... End Sub Sub UpdateSheet(MonthSeq) ...[код]... End Sub ВыходВыход
  • 9. Вызов процедуры из другого модуля В одном модуле не может быть двух процедур с одинаковыми именами. Но в разных модулях можно давать одинаковые имена. Тогда для вызова такой процедуры перед названием записывают название модуля где она находится и точку. ВыходВыход
  • 10. Предположим, вы создали процедуры с названием MySub в двух модулях: Module1 и Module2. Если требуется, чтобы процедура MySub в Module2 вызывала MySub из Module1, то используется один из следующих операторов: Module1.MySub Call Module1.MySub ВыходВыход
  • 11. Передача аргументов в процедуры АргументыАргументы обеспечивают процедуру данными, использующимися в ее инструкциях. Аргумент может передавать следующие данные: • переменная; • константа; • массив; • объект. ВыходВыход
  • 12. Передача аргументов Существует два способа передачи аргументов в процедуру: по ссылкессылке и по значениюзначению. При передаче аргумента по ссылке (используется по умолчанию) в процедуру передается адрес переменной. При передаче аргумента по значению в процедуру передается копия переменной. Следовательно, изменение аргумента в процедуре не вызывает изменения исходной переменной. ВыходВыход
  • 13. Пример Sub Main() MyValue = 10 Call Process(MyValue) MsgBox MyValue End Sub Sub Process(YourValue) YourValue = YourValue * 10 End Sub ВыходВыход
  • 14. Если необходимо, чтобы вызываемая процедура не изменяла переменные, полученные как аргументы, то их необходимо передавать по значению, а не по ссылке. Для этого добавляется перед аргументом ключевое слово ByValByVal. Тогда вызываемая процедура будет управлять копией переданных данных. ВыходВыход
  • 15. Например Sub Process(ByVal YourValue} YourValue = YourValue * 10 End Sub ВыходВыход
  • 17. Объявление функции [Public | Private] [Static] Function имя ([список_аргументов]) [As тип] [инструкции] [имя = выражение] [Exit Function] [инструкции] [имя = выражение] End Function ВыходВыход
  • 18. Функция с аргументом массивом Function SuinArray(List) As Double Dim Item As Variant SumArray = 0 For Each Item In List SumArray = SumArray + Item Next Item End Function ВыходВыход
  • 19. Вызов этой функции Sub MakeList() Dim Nums(1 To 100) As Double Dim i as Integer For i = 1 To 100 Nums(i) = Rnd * 1000 Next i MsgBox SumArray (Nums) End Sub ВыходВыход