Навигация
Структура программы. Модули, процедуры и функции
Просмотров: 10 255 |
Комментарии (0)
17 февраль 2011 |

Модуль представляет собой текстовый ASCII-файл с программным кодом, содержащим подпрограммы, переменные и константы. Проект может состоять из множества программных модулей. Для их создания необходимо выполнить команду Вставка Модуль. Рабочее окно модуля представлено на рис. 4.1.

 

 

Основу программ в VBA составляют процедуры и функции.

Процедура Sub– это обособленная совокупность операторов VBA, выполняющая определенные действия. В общем случае процедура принимает некоторые параметры (переменные, которые передаются процедуре в качестве исходных данных), выполняет программу и может возвращать результирующие значения, которые присваиваются параметрам внутри процедуры. Однако чаще используются процедуры без параметров. Например, процедуры, выполняющиеся при возникновении определенных событий. Вложенность процедур в другие процедуры не допускается. Структура процедуры следующая:

[ДОСТУП] Sub ИМЯ_ПРОЦЕДУРЫ ([СПИСОК_ПАРАМЕТРОВ])

                 ТЕЛО_ ПРОЦЕДУРЫ

End Sub

Ключевое слово ДОСТУП является необязательным и определяет область видимости процедуры. Public указывает, что процедура доступна для всех других процедур во всех модулях (глобальная).  Private указывает, что процедура  доступна для других процедур только того модуля, в котором она описана (локальная). СПИСОК_ПАРАМЕТРОВ также является необязательным элементом и позволяет передавать процедуре различные исходные данные при вызове, которые называются формальными параметрами. При этом ключевое слово Dim не указывается. ТЕЛО_ПРОЦЕДУРЫ состоит из описательной части и блока операторов, выполняющихся один за другим. Если необходимо прекратить выполнение процедуры в некотором конкретном месте, это можно сделать с помощью оператора Exit Sub. ИМЯ_ПРОЦЕДУРЫ – это любой идентификатор, определенный пользователем. Идентификатор – это последовательность  букв, цифр и символа подчеркивания, начинающаяся с буквы (пробелы внутри идентификатора недопустимы). Имя процедуры всегда определяется на уровне модуля. Для использования процедуры в тексте программы (т.е. для её вызова), необходимо указать имя процедуры и список фактических параметров, которые должны по типу и порядку следования совпадать с формальными параметрами.

Функция Function во многом похожа на процедуру, но в отличие от неё при вызове всегда возвращает значение. Функция получает параметры, называемые аргументами, и выполняет с ними некоторые действия, результат которых возвращается функцией. Структура функции следующая:

[ДОСТУП] Function ИМЯ_ФУНКЦИИ(СПИСОК_АРГУМЕНТОВ) As ТИП

                 ТЕЛО_ ФУНКЦИИ

                ИМЯ_ФУНКЦИИ = ВЫРАЖЕНИЕ

End Function

ТИП определяет тип данных возвращаемого результата. В теле функции обязательно должен присутствовать, по крайней мере, один оператор, присваивающий имени функции значение вычисляемого выражения. Досрочное завершение функции возможно с помощью оператора Exit Function. В программе вызов функции осуществляется с помощью оператора присваивания, в правой части которого указывается имя функции с перечнем фактических параметров, как и любой другой встроенной функции, например, Sqr, Cos или Chr.

 

Процедуры и функции, не описанные явно с помощью ключевых слов Public или Private, по умолчанию являются общими.

Для быстрого добавления в модуль подпрограмм удобно воспользоваться командой Вставка Процедура. В появившемся окне (рис. 4.2) нужно выбрать необходимые опции.

В MS Excel с функциями, созданными пользователем, можно работать с помощью Мастера функций точно так же, как и со встроенными функциями рабочего листа.

Пример. В MS Excel создать функцию пользователя, математически определенную следующим образом:

y = sin(x) ∙ e-5x


Создадим модуль, как указано выше (рис 4.2), и введем в него текст следующей программы:

 

 

Public Function Y(x As Single) As Single

          Y =  Sin(x) *  Exp(- 5 * x )

End Function 


Для использования созданной функции на рабочем листе MS Excel введем в ячейку А2 число 0.1. В ячейке В2 вычислим значение функции Y при x = 0.1. Для этого в ячейку В2 достаточно ввести формулу    =Y(A2). Это можно сделать и с помощью Мастера функций, который будет содержать функцию Y наряду с другими встроенными функциями  MS Excel (рис 4.3).

 

 

Общие принципы организации программ VBA в модуле следующие. Обычно текст программы начинается с опций, которые управляют описанием переменных, способом сравнения строк и т. д.

Затем следует объявление глобальных для  данного  модуля переменных и констант, т.е. таких, которые используются во всех процедурах модуля.

Далее располагают непосредственно текст функций и процедур, составляющих саму программу.

Разделителем операторов в одной строке при записи программы является символ “:”.

Для переноса оператора на другую строку используется символ “_” (знак подчеркивания).

 

Иногда внутри программы удобно помещать комментарии – пояснительный текст, который игнорируется компилятором и может быть записан в любом месте программы. Комментарии удобно также использовать при отладке программы для временного отключения операторов. Каждая строка комментариев начинается со знака апострофа.

Пример организации модуля: 

Option Base 1

Option Explicit

‘ PI – глобальная константа 

Const  PI  As Double = 3.14159

‘ x -  глобальная переменная

Dim x As Double 

 ‘ Функция Disc вычисляет площадь круга

Public Function Disc(R As Double) As Double

     x = 2

     Disc = PI * R ^ 2

End Function 

‘ Функция Rec вычисляет площадь треугольника

Public Function Rec(a As Double, b As Double, c  As Double ) As Double

  p – локальная переменная

 Dim p As Double 

    p = ( a + b + c) / 2

    Rec = Sqr ( p * ( p – a )* ( p – b ) * ( p – c))

End Function 

‘ Процедура Result вызывает функции Disc и Rec  и выводит результаты

Public Sub Result ( )

 R_1, R_2, a, b, c - локальные переменные

 Dim R_1 As Double

 Dim R_2 As Double

 Dim a As Double

 Dim b As Double

 Dim c As Double

    R_1 = Disc( 2. 5 )

    x = x + 2

    MsgBox “ Площадь круга = “ &  CStr( R_1) & “, x = “ & CStr (x)

    a =1  

    b = 1  

    c = Sqr (2)

    R_2 = Rec (a, b, c)

    MsgBox  “ Площадь треугольника = “ &  CStr( R_2)

End Sub

Здесь инструкция Option Explicit  указывает на необходимость описания типов переменных, используемых на данном листе модуля.

Инструкция Option Base 1 указывает, что индексация элементов массива будет начинаться с 1.

Функция Sqr вычисляет квадратный корень аргумента.

Функция CStr переводит числовой формат в строковый.


Вернуться назад



Другие новости по теме:

    Друзья сайта
    Календарь

    С 2017 года онлайн казино Вавада работает над улучшением и без того развитого функционала для азартных игроков. Официальный сайт защищен от взлома и вирусов, администрация соблюдает политику конфиденциальности, а для пополнения или вывода денег используются проверенные электронные платежные системы.



    Можно ли получить высшее образование, не потратив денег? Всем известно, что поступить на бесплатное обучение довольно сложно. И если вам это не удалось, то можно существенно сократить свои расходы, выбрав контрактную форму обучения.



    Интернет-технологии – особый вид технологий создания, а также поддержки различного рода информационных ресурсов в сети Интернет. К этим ресурсам относятся форумы, чаты, сайты блоги, энциклопедии, а также электронные библиотеки.



    На сегодняшний день практически каждая компания, организация или фирма имеет свой корпоративный сайт в сети, что позволяет осуществлять различные действия через интернет. Безусловно, для нормального функционирования любого ресурса, он должен быть максимально качественно разработан, дополнен различными полезными деталями и материалами. Информационное наполнение сайтов может быть создано несколькими способами.



    По данным статистики подростки школьного возраста проводят за экранами телевизоров около четырех часов в день, и это не считая времени проводимого за компьютерными играми. Дети часто играют в игры, причем, даже не замечая времени, которое они тратят не на уроки, а на игры, многие даже пропускают школьные занятия, если нет контроля родителей. По исследованиям ученых компьютерные игры стимулируют у детей лишь ограниченный участок головного мозга, а ведь детям необходимо читать, писать и считать.



    Наука является основной движущей силой, которая развивает очень многие сферы в человеческой жизни. Но ученые тоже люди и могут допускать разные ошибки. Я думаю, что не всегда можно доверять науке. Она всегда является спорным вопросом. Некоторые ученые как - бы не от мира сего, их никто и ничто не волнует кроме своей работы,