06.01.2015 Views

Введение в программирование на VBA - eDrive

Введение в программирование на VBA - eDrive

Введение в программирование на VBA - eDrive

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

31<br />

<strong>в</strong>ызо<strong>в</strong>а ей передаются данные <strong>в</strong> <strong>в</strong>иде аргументо<strong>в</strong>. Определение<br />

подпрограммы:<br />

[операторХранения] Sub имяПодпрограммы ( [объя<strong>в</strong>лениеАргументо<strong>в</strong>] )<br />

[Выражение<br />

…]<br />

End Sub<br />

К операторам хранения относятся Const, Dim, Static, Public, Private, а<br />

объя<strong>в</strong>лениеАргументо<strong>в</strong> предста<strong>в</strong>ляет упорядоченную последо<strong>в</strong>ательность<br />

разделенных запятыми имен переменных, з<strong>на</strong>чения которых передаются <strong>в</strong><br />

процедуру. Как и макрос, од<strong>на</strong>жды описан<strong>на</strong>я подпрограмма используется <strong>в</strong><br />

ходе <strong>в</strong>ыполнения программы столько раз, сколько будет про<strong>в</strong>едено ее<br />

<strong>в</strong>ызо<strong>в</strong>о<strong>в</strong>. При <strong>в</strong>ызо<strong>в</strong>е ей списком (через запятую) передаются з<strong>на</strong>чения<br />

аргументо<strong>в</strong> <strong>в</strong> том порядке, <strong>в</strong> котором они следуют <strong>в</strong> описании. Чтобы<br />

отличать <strong>в</strong>ызо<strong>в</strong>ы а<strong>в</strong>торских подпрограмм от операторо<strong>в</strong>, можно пред<strong>в</strong>арять<br />

их оператором Call. Отсюда — несколько способо<strong>в</strong> <strong>в</strong>ызо<strong>в</strong>а подпрограмм:<br />

• [имяМодуля.] имяПодпрограммы [списокЗ<strong>на</strong>ченийАргументо<strong>в</strong>]<br />

• [Call] [имяМодуля.] имяПодпрограммы<br />

[ (списокЗ<strong>на</strong>ченийАргументо<strong>в</strong>) ]<br />

• [имяМодуля.] имяПодпрограммы<br />

имяИмено<strong>в</strong>анногоАргумента := З<strong>на</strong>чение [,…]<br />

Если имя модуля содержит пробелы, <strong>в</strong> <strong>в</strong>ызо<strong>в</strong>е оно заключается <strong>в</strong><br />

прямоугольные скобки. Имя модуля опускают при <strong>в</strong>ызо<strong>в</strong>ах подпрограмм <strong>в</strong><br />

пределах модуля.<br />

Как следует из этих синтаксических формул, <strong>в</strong>ызо<strong>в</strong> подпрограммы,<br />

которая не <strong>в</strong>оз<strong>в</strong>ращает з<strong>на</strong>чения, сопро<strong>в</strong>ождается передачей ей списка<br />

аргументо<strong>в</strong> через запятую после имени подпрограммы. Если подпрограмма<br />

<strong>в</strong>оз<strong>в</strong>ращает з<strong>на</strong>чение, список аргументо<strong>в</strong> заключается <strong>в</strong> скобки.<br />

Если среди списка аргументо<strong>в</strong> присутст<strong>в</strong>ует необязательный аргумент,<br />

его можно опускать, оста<strong>в</strong>и<strong>в</strong> запятую <strong>в</strong> списке. В конце же списка запятые<br />

пропущенных аргументо<strong>в</strong> не ста<strong>в</strong>ятся. При использо<strong>в</strong>ании оператора Call<br />

з<strong>на</strong>чения аргументо<strong>в</strong> следует заключать <strong>в</strong> скобки. Кроме списка, при <strong>в</strong>ызо<strong>в</strong>е<br />

подпрограмм могут использо<strong>в</strong>аться имено<strong>в</strong>анные аргументы, то есть<br />

аргументы с име<strong>на</strong>ми, определенными при описании процедуры. В случае<br />

такого <strong>в</strong>ызо<strong>в</strong>а <strong>в</strong>место того, чтобы зада<strong>в</strong>ать последо<strong>в</strong>ательный полный список<br />

аргументо<strong>в</strong>, можно прис<strong>в</strong>аи<strong>в</strong>ать з<strong>на</strong>чения <strong>в</strong> произ<strong>в</strong>ольном порядке через<br />

з<strong>на</strong>к :=.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!