Програмиране на VBA
background image

Програмиране на VBA

1.

Основни понятия

..................................................................................................................1

2.

Събитийно програмиране с Visual Basic for Application

...............................................4

3.

Основни елементи на VBА

..................................................................................................6

4. 

Оператори за контрол и предаване на управлението

.................................................11

5. 

Обектен модел на Excel

....................................................................................................18

6. 

Обектен модел на WORD

.................................................................................................22

1.Основни понятия

Описание на редактора на VBA

От менюто 

Tools

 се избира 

Macro

 и след това 

Visual Basic Editor

. Отваря се 

прозорец на  Microsoft Visual Basic.

Фиг.1.1

На второ ниво след името на проекта, се показват имената на основните 

елементи, които се включват в един проект. Това са:

Microsoft Word 

(или 

Excel) Objects 

(обекти в средата 

на Word 

или 

Excel),

Forms 

(прозорци, създадени от потребителя – потребителски форми)

Modules 

(модули­програми на 

VBA). 

Ако някои от тези елементи не присъстват, те се създават с командата 

Insert 

от 

главното меню на 

VB Editor. 

1

background image

На трето ниво се намират имената на създадените елементи от всяка група. 

В групата на 

Microsoft Excel Objects 

се включва 

This Workbook 

(текущата 

книга) и имената на всеки лист в нея, а в групата 

Microsoft Word Objects ­ 

This Document 

(текущият документ). 

В групата 

Forms 

се включват имената на създадените потребителски 

прозорци. 

Елементи на 

Modules 

са имената на създадените модули в проекта, които се 

наричат стандартни (за разлика от програмите, които са свързани с обект или 
форма) 

Под

 Project Explorer 

е диалоговият прозорец 

Properties. 

За всеки избран 

елемент от дървото, в този диалогов прозорец се показват свойствата, които 

потребителят може да променя. 

Фиг.1.2

Обектите и формите имат два компонента: визуален (самият обект или форма) и 

програмен код. Двата изгледа се превключват с командата 

View/Object 

(отваря се 

прозорец с обекта или формата) и 

View/Code

 (отваря се прозорецът Code). 

Елементите на 

Modules 

имат само един изглед – програмен код.  

В прозореца 

Code 

се показва съдържанието на вече въведените процедури, в 

които може да се правят корекции, както и да се въвеждат нови процедури.

2

background image

                                                       Фиг.1.3

От менюто 

View 

на редактора на 

VBA 

могат да се отворят три спомагателни 

прозорци

Immediate Window, 

Locals Window и 

Watch Window. 

Прозорецът I

mmediate 

се използва за извеждане на резултати („отпечатване") от 

програма с командата 

Debug.Print. 

Операторите, въведени в този прозорец, се 

изпълняват веднага, което помага при тестване на програми. 

Прозорецът 

Locals 

показва стойностите на всички локални променливи 

(дефинирани в текущата процедура).

Прозорецът 

Watch 

показва всички стойности на променливи или изрази, които са

избрани за наблюдение.

3

background image

                                                                   Фиг.1.4

Редакторът на VBA 

може да бъде в един от трите режима:

на проектиране,

на изпълнение

на прекъсване.

Редакторът е в режим на проектиране D

esign Mode, 

когато се пише код или се 

проектира форма.  

Когато се изпълнява командата 

Run/Run, 

преминава в режим на изпълнение. 

Тогава се изпълнява процедурата, в която е точката на вмъкване. 

Когато е в режим на изпълнение и 

VBA 

открие грешка, редакторът преминава в 

режим на прекъсване и се извежда съобщение за грешка. Един от бутоните в прозореца 
на съобщението за грешка е 

Debug. 

С този бутон изпълнението на програмата се 

прекъсва и точката в който е грешката, се оцветява в жълто. В менюто на редактора има 
команда 

Debug, 

която предлага различни възможности за откриване и отстраняване на 

грешки.

2.Събитийно програмиране с Visual Basic for

Application

Основни концепции

Обектен модел

 – обекти, свойства, методи, колекции

Управление на настъпващи събития с обектите в приложенията

 – по време на

използване на приложението се случват определени събития. Събитията могат да 
настъпят в резултат от действията на потребителя или след изпълнение на програма. 

Например, затварянето на документ или промяната на размера на диаграма са събития. 
С отделно събитие може да се свърже процедура, която ще се изпълни, когато събитието

се случи. 

4

background image

Смисълът на програмирането с VBA е да се контролират обектите, като се 

променя външния им вид или те се принуждават да извършват различни действия.

Обектен Модел

Всяко приложение, включено в Microsoft Office има собствен обектен модел, 

отразяващ специфичните му особености. Основните елементи на обектния модел са:

обекти

свойства

методи

събития

Обекти са всички елементи на приложение, които могат да се управляват със 

средствата на VBA. Например:

в 

Word 

обекти са документ, абзац, отметки, таблици и др., 

в 

Excel 

обекти са книга, лист, област от клетки, диаграма и др. И двете 

приложения имат сложни обектни модели. 

Всеки обект има свойства и методи. Свойствата и методите на един обект се 

наричат членове (

members

) на обекта. 

Достъпът до обектите се осъществява чрез обектните променливи

 – 

обектната променлива е име на място от паметта, където се пази 

адресът 

на обекта. Тъй

като обектната променлива е указател, то е възможно към един обект да указват повече 

от една променливи.

Свойства на обектите

Едно свойство на обекта представлява негова отличителна черта, характеристика

или атрибут. Например обектът – абзац има 34 свойства, между които са подравняване, 
междуредие, лява и дясна граница и т.н. 

Свойствата могат да приемат стойности от всеки валиден тип, дори обект. 

Свойствата на обекта се променят като се променят стойностите им с команда от вида:

обект.свойство = израз

 

Свойството може да върне стойност с командата:

променлива = обект.свойство

Някои свойства могат да върнат обект, например свойството 

Font

 връща обект 

Font

Някои свойства имат множество стойности и за улеснение при използването им 

те се предлагат групирани в т.нар. изброители (

Enum

).

Метод

Методът е процедура, определяща действие, което може да се извърши с обекта. 

Например, обектьт­работен лист в Excel има метод 

Protect

, който осигурява защита на 

листа. Методите могат да имат аргументи, които уточняват как да се извърши 

действието. Командата за прилагане на метод е: 

обект.метод(аргументи)

Ако аргументите не са в скоби, получената (върнатата) стойност не се запазва. В 

резултат от своето действие методът може да върне обект.

5

background image

Колекции

Съществуват много обекти, които са еднотипни и могат да присъстват 

едновременно. Например, абзаците или символите в един документ, клетките, редовете 

или колоните в един работен лист и др. 

За управлението на такива обекти в обектния модел са включени 

обекти

­

колекции

. Те имат общо име и пореден номер (индекс). Обектите­колекции имат свои 

свойства и методи. Колекциите обикновено имат свойство брой (

Count

), което е 

достъпно само за четене, тъй като VBA автоматично актуализира броя на екземплярите 
в колекцията. Колекциите имат метод за добавяне на елемент и метод за отстраняване 
на елемент. Имат също така метод 

Item

 (екземпляр от колекция), позволяващ достъп до 

точно определен обект по индекса или по името му. Този метод е подразбиращ се и 
може да се пропусне: 

Documents.ltem(2)

 и 

Documents^)

 са еквивалентни.

Наследяване 

Някои свойства и методи могат да връщат обекти, които се наричат 

обекти­

наследници, 

а обектът, от който са създадени – родител. Един обект може да има много

родители и наследници. 

Например обектът 

Application

 (приложение), е родител на всички обекти. 

Връзката родител­наследник позволява при създаване на нов обект, неговите свойства да

бъдат присвоявани на всички обекти, които могат да са му родители.

Например 

Font

 (шрифт) е наследник на 

Paragraph

 (абзац) и 

Selection

 (маркиран 

текст). Ако се създаде нов обект 

Font

, неговите свойства могат да се присвоят на 

различни абзаци и маркиран текст.

Създаване на потребителски интерфейс

VBA притежава възможности за създаване на потребителски прозорци, които се 

наричат форми (

User Forms

).

 

Формите представляват визуален интерфейс и модули с 

код, които се използват за комуникация с потребителя. 

Контроли – елементи  от инструментите – 

Tools

. Примери за контроли са: 

текстови полета, командни бутони, радиобутони. комбополе и др.

Контролите осигуряват визуален интерфейс с потребителя. Те имат методи, 

които могат да се приложат от потребителя, свойства, които могат да се прочетат или 
променят, и събития, за които може да се напише процедура. Когато в прозореца 

User

 

Form

 се изпълни някакво действие върху една контрола (щракване, двойно щракване, 

маркиране на поле за избор, избор на радиобутон и др.), се отваря обвивка на процедура,

която ще обработва настъпването на събитието.

3.Основни елементи на VBА

Основни положения

6

background image

Visual Basic for Application

 се използва за съставяне на програми. Програма (или

програмен код) на VBA представлява оператори, които задават последователността от 
действия, които трябва да се извършат. 

Обикновено всеки оператор се записва на отделен ред. Възможно е на един ред да

се запишат повече оператори, които се отделят с двоеточие (:).

 

За да се чете по – лесно програмата, много дългите оператори могат да се 

запишат на няколко реда. За да се покаже, че операторът продължава на следващият 

ред, в края на реда се въвежда интервал и веднага след него знак за подчертаване ( _ ).

Типове данни

Данните, използвани от VВА се разделят надве основни групи: константи и 

променливи. Операторът за описание на типа на данните има следния вид:

Dim 

име

 

As 

тип

,

където 

име 

е име на променлива, 

тип 

е един от допустимите за езика VBA тип данни, a 

Dim

 и 

As

 са служебни думи. 

Имената могат да се състоят от букви, цифри и знак за подчертаване, без 

интервали и могат да имат дължина от един до 255 символа. Първият символ в името 
трябва да е буква.

Оператор за присвояване

Операторът за присвояване на стойност на променлива има вида:

име = израз

където 

име е 

име на променлива, а 

израз е 

правило за получаване на стойност. 

В общия случай изразът се състои от променливи и константи, свързани със знаци 

за операция. Операторът за присвояване се изпълнява, като първо се изчислява изразът, 
след което в променливата се записва получената стойност. Извършваните действия 

зависят от типа на данните, участващи в израза. Възможно е изразът да се състои само от
една променлива или константа.

Константи

Константите не променят стойността си по време на изпълнение на програмата. 

Обикновено се представят със собствената си стойност и типът им се определя неявно в 

зависимост от съдържанието им. Примери за константи са:

5 ­числова,

„ЮЗУ" ­ символна,

# 1/1/2001 # ­ дата. 

Символните (низови) константи се заграждат с кавички, а датите – със знака # .

Възможно е на константите да се дават имена, като се описват със служебната дума 

Const

 

Например 

Dim Const 

Vuz = „ЮЗУ" описва името Vuz като константа, т.е. Vuz 

не може да променя съдържанието си.

Вградени константи

7

background image

Във VBA

 

се използват и т.нар. вградени константи. Техният брой е много голям 

(стотици) и имената им започват със символи, които определят с кое приложение могат 
да се използват (

vb

wd

xl

 и др.). 

Например, ако започват с 

vb

, те се използват с всички приложения ­ 

vbCr 

се  

използва за натиснат клавиш 

Enter 

(например за край на абзац), a 

vbTab 

– за клавиш за 

табулация.

Съществуват и структури от групирани в категории вградени константи, които се

наричат изброители – 

Enum. 

Тези константи могат да се използват както с името им, 

така и с конкретната стойност. Пример за изброител на константи за цветове:

Enum ColorConstant

vbBlack

 = О

vbBlue

 = 16711680

vbMagenta

 = 16711935

vbCyan

 = 16776960

vbWhite

 = 16777215

vbRed

 = 255

vbGreen

 = 65280

vbYellow

 = 65535

End Enum

Променливи

Една променлива може да бъде разглеждана като адрес в оперативната памет, 

където се съхранява стойност. Тази стойност може да се променя многократно по време 
на изпълнение на програмата. Всяка променлива има точно определен тип, който 

определя какви стойности може да съхранява. Описанията на променливите, използвани 
в програмата, обикновено се записват в началото. Например:

Dim 

nom

 As Integer

,

описва 

nоm

 като променлива от тип цяло число;

Dim 

per

 As Date, 

ime

 As String

,

описва 

per

 като променлива от тип дата, a 

ime

 – като променлива от тип символен низ 

(стринг).

Типове данни

Числовите типове данни включват 

Integer, Long, Single, Double и Currency 

и се 

използват за описание на променливи, които приемат числови стойности. Различават се 
по големината числата, които могат да се представят. 

Променливите от тип 

Boolean 

приемат една от двете възможни логическите 

стойности 

True

(истина) и 

False

(неистина).

Данните от тип 

String

(низ) представляват последователност от символи 

(включени в кодовата таблица). Съществуват два ти па низови променливи – с 

фиксирана дължина и с променлива дължина. Например, ако променливата 

prof

 

е с 

фиксирана дължина (10 символа), а променливата 

name

 

е с променлива дължина, то те 

трябва да бъдат описани по следния начин:

Dim 

prof

 

As

 

String 

* 10

8

background image

Dim 

name

 

As

 

String

Данните от тип 

Date

 се пазят и обработват като десетични числа, но може да им 

се присвояват константи, които са записани във формат за дати. Например, операторът

Dim 

Data

 As

 

Date

описва променливата 

Data

 

от тип 

Date

.

Присвояване на стойност на променливи от посочените типове 

данни

На променлива, която има някой от описаните no – горе типове, се присвоява 

стойност с оператор за присвояване 

(

име = израз

). 

Задължително е типът на 

променливата в лявата част на оператора да съответства на типа на израза в дясната 
част. Различните типове данни могат да участват само в разрешения им вид изчисления. 

Когато променливата е от числов тип, то в израза трябва да участват променливи и 
константи от същия тип и да се използват знаци за аритметични операции ( + ,­,*,/, "). 

Когато променливата е от тип низ, може да се използва само знакът за операция 
конкатенация(слепване на низове) „

&”

, като променливите и константите в израза също 

са от тип низ. Логически стойности се получават в резултат на операции за сравнение (>,
<, = , < 

>, >=, < 

=) или логически операции 

(And, Or, Not, Eqv, Xor

).

Пример

:

Dim 

br 

As

 

Long, 

name 

As

 

String

, datn 

As

 

Date, 

datk 

As

 

Date 

Dim 

suma 

As

 

Long, 

bN 

As

 

Boolean, 

cena 

As

 

Long

br = 100 

name = „SWU"
datn =  # 2/20/2001 #

datk =  #4/15/2001 10:40#
suma = br * cena

name = name & „­" & „София"
bN = datn > datk And name < > „SWU"
Променливите от тип 

Variant 

приемат всички типове данни, с изключение на 

низовете с фиксирана дължина. Удобно е да се използва при променливи, на които могат

да се присвояват различни типове данни по време на изпълнение на програмата.

Променливите от тип 

Object

 заемат 4 байта от паметта, защото се съхранява 

само указател (адрес) на обекта. За описание на променливи – обекти се използва тип 

Object, 

например:

Dim 

pismo 

As

 

Object

Този тип е твърде общ. Всяко приложение в 

MS Office 

има собствен набор от 

различни обекти и типове за описанието им. Например, ако променливата pismo е име на
обект­документ  в 

Word, 

а променливата tabl е име на обект­работен лист в 

Excel, 

за 

описанието им се използват операторите:

Dim 

pismo 

As

 

Document

Dim 

tabl 

As

 

Worksheet

За присвояване на стойности на обектни променливи се използва операторът за 

присвояване, като пред името на променливата се записва служебната дума 

Set

:

9

background image

Set

 pismo = 

ActiveDocument

на pismo се присвоява текущият документ в 

Word.

Типът 

User Define 

се използва за описание на група от разнородни данни (запис). 

Групата има общо име, но на всеки неин елемент също се дава име. Използва се при 
описание на записи от база данни (ред от списък 

в 

Excel). 

Например, променливата 

St

представя данните за една стока:

Dim 

St 

As

 

User Define

                                                  M_ed 

As

 

String 

                                                  Norn 

As

 

Long 

                                                  Naim 

As

 

String 

                                                  

EdCena 

As Single

Ако не се посочи изрично типът на променливите, VBA присвоява тип 

Variant

който е съвместим с всички типове, но заема най – много памет. За да се следи 

автоматично дали всички променливи са описани, в началото на програмата се записва 
операторът 

Option Explicit.

 При определяне на типа на променливите, автоматично се 

присвояват начални стойности:

за числовите типове – 0,

за низ – „”(празен низ), 

за обект – Nothing(няма указател). 

Препоръчва се присвояването на начални стойности да се прави явно посредством 

оператори за присвояване.

Масиви

Масивите представляват съвкупност от еднотипни променливи, които имат 

общо

име

 и се идентифицират с 

поредния си номер (индекс

). Масивите се описват, като след

името в скоби се записват границите на индекса на масива, които определят броя на 

елементите му. Например, операторът

Dim 

uvod (1 

to

 10)

 As Paragraph

описва едномерен масив от 10 (от 1 до 10) абзаца, a uvod(1) е първият от тях. Ако не се 
посочи долната граница на индекса, тя се приема за 0. Например, следващият оператор 

описва масив от 16 (от 0 до 15) клетки в работния лист:

Dim 

razh(15) 

As

 

Range

Когато при декларирането не е ясно колко елемента ще има масивът, той може да

се опише като динамичен, т.е. в скобите след името не се задават граници на индекса:

Dim

 ime() 

As String

Размерът на този масив може да се определи по – нататък в програмата с 

оператора:

ReDim

 ime(1 

to

 100)

Ако се наложи отново да се променя размерността на масива, за да не се изтрият 

данните, съдържащи се в него, се добавя служебната дума 

Preserve

. В този случай може 

да се променя само горната граница на размера:

10

background image

ReDim

 

Preserve

 ime(1 to 200)

Възможно е да се използват и многомерни масиви. Например масивът Kat(1 

to

 

10,1 

to

 20) е двумерен с 10 реда и 20 колони. Има две функции за работа с масиви, които

връщат долната и горната граница на индекса. Това са съответно 

Lbound

 и 

UBound

.

Имена на променливите

Препоръчва се името на променливата да подсказва типа. Много програмисти 

използват т.нар. Унгарска конвенция за съставяне на имена. На имената се поставят 
представки, които подсказват типа на променливата. Най­често употребяваните 

представки са показани в таблиците:

Тип

Byte

Boolea

n

Integer Long

Singl

e

Doubl

e

Date String Varian

t

b, f

b, bt

I, c, int

lng, s

sng, s

str

dt

s, str

v

Тип

Char

t

Workboo

k

Workshee

t

Rang

e

Fon

t

Documen

t

Paragrap

h

Selectio

n

ch

wb, wbk

ws, wsk

rng

fnt

doc

para

sel

Във 

VBA 

съществува възможност типът на променливата да се определи, като се 

постави определен символ в края на името:

Символ

%

&

!

#

@

$

Тип

integer

long

single

double

currency

string

Описание

цяло

число

дълго

цяло

число

числа с плаваща

запетая с

единична и двойна

точност

валута

низ

Например, операторът 

Dim 

name

$

 определя променливата 

name

 като низ.

Област на действие на променливите

Променливите и константите имат определена област на действие, която 

определя къде може да се използва (вижда) дадена променлива или константа. 

Когато променлива или константа са описани в процедура, те могат да се 

използват само в тази процедура и се наричат 

локални

. Локалните променливи се 

разрушават след края на процедурата, а при следващото й изпълнение отново се 

създават. 

Когато описанията на променливи и константи са записани в частта 

(Declarations) 

на прозореца 

Code 

в редактора на VBA, те са на ниво модул. 

Променливите, декларирани на ниво модул, се запазват до края на изпълнението на 

модула. Ако е необходимо една променлива да е локална, но да се запазва през цялото 
време на изпълнение на модула, е необходимо пред името на променливата да се запише 
служебната дума 

Static

11

background image

Когато пред името на променлива е поставена ключовата дума 

Private

, то тя се 

вижда във всички процедури на модула, а ако ключовата дума е 

Public

, тя е достъпна за 

всички модули и проекти.

4. Оператори за контрол и предаване на управлението

Оператор If

Съкратена форма – общ вид

If 

условие 

Then 

оператор

,

където 

условие е 

логически израз, който има стойност 

True

 или 

False

, a 

If

 и 

Then

 са 

служебни думи. Първо се проверява условието и ако е истина, операторът се изпълнява, 
а в противен случай – не се изпълнява. Например, ако dr и dot са променливи от тип 

Date

, a igod е целочислена променлива, след изпълнение на оператора:

If dr < dot Then 

igod = igod +1

променливата igod ще нарасне с 1, само ако dr е по­малка от dot. Ако е необходимо да се
изпълнят повече оператори, когато условието е истина, операторът If се записва така:

If 

dr < dot 

Then

igod = igod +1 ibroj = ibroj +1

<други оператори >

   

 

End

 

If

Пълна форма

If

 условие 1 

Then

<оператори 1

>

Elseif 

условие 2 

Then

<оператори 2>

Else

<оператори 3>

End If

В този случай се изпълнява само една от трите групи оператори. Първо се 

проверява 

условие 1 ­ 

ако то има стойност истина (

True

), се изпълняват само 

операторите от групата <оператори 1>. Ако 

условие 1 

е неистина (

False

), се проверява 

условие 2. 

Когато 

условие 2 

е истина, то се изпълняват операторите <оператори 2>, а 

ако е неистина, се изпълняват <оператори 3>. 

Ако е необходимо да се проверяват повече от две условия, трябва да се включат 

допълнителни редове с 

Elself

.

Оператор Select Case

Този оператор осигурява изпълнението на различни групи оператори. Общият вид

на оператора е:

Select Case 

тестов_израз

  Case 

израз 1

12

background image

    

оператори

  Case 

израз 2

    

оператори

  Case 

израз 

З

    

оператори

  Case Else

    

оператори 

End Select

Тестовият израз се сравнява последователно с изразите след ключовата дума 

Case 

и при съвпадение, операторите след 

Case 

се изпълняват, ако не се открие 

съвпадение, се изпълняват операторите след 

Case Else.

Когато последователност от оператори трябва да се изпълнява многократно, се 

казва, че те се изпълняват в цикъл. Във VBA

 

има три оператора за организиране на 

цикли.

Оператори за цикли

Оператор For...Next

For 

брояч = начало 

То 

край 

[Step 

стъпка

]

 

оператори

 

Next [

брояч

]

където 

брояч е 

променлива от тип цяло число, която приема последователно стойности 

в интервала от 

начало 

до 

край, 

като всяка следваща стойност се получава като се 

прибави 

стъпка. 

В квадратни скоби са параметрите, които могат да се пропускат. 

Стъпка 

може 

да е положително или отрицателно число, а ако се пропусне се приема за 1. При 

стъпка 

0 стойността 

начало 

винаги е по­малка от стойността 

край

,

 

в противен случай 

цикълът не се изпълнява. 

Описаните действия се повтарят докато 

брояч 

стане по – голям от 

край 

и 

цикълът се прекратява. Променливата 

брояч 

може да се използва в тялото на цикъла, но 

не трябва да присвоява стойности. При 

стъпка

 < 0, 

начало 

е с по – голяма стойност от 

край. 

При оператора 

For

...

Next

 броят изпълнения на цикъла е известен предварително. 

Например, ако на елементите на масива Nom(1 to 100) е необходимо да се присвоят 

поредните 100 четни числа, се използва операторът:

For

 i = 1 to 100

Nom

(i) = l*2 

Next

 i

Операторът 

Exit For 

се използва за прекратяване на цикъла преди нормалния му 

край. 

Оператор Do...Loop

Този оператор за цикъл има няколко варианта. Общият вид на оператора е:

Do While 

условие

оператори 

Loop

или

13

background image

Do

оператори

Loop While 

условие

където 

условие е 

логически израз. 

Операторите в тялото на цикъла се изпълняват докато 

условие 

има стойност 

истина (

True

). Цикълът се прекратява когато 

условие 

стане

 

неистина (

False

). 

При първия вариант на оператора условието за прекратяване на цикъла се 

проверява преди изпълнение на тялото. 

При втория вариант – в края (тялото се изпълнява поне веднъж). 
Вместо служебната дума 

While

 може да се използва 

Until

. В този случай, цикълът

се изпълнява докато 

условие 

има стойност неистина (

False

) и се прекратява, когато 

условие 

стане истина (

True

). За принудително прекъсване на изпълнението на цикъла се 

използва операторът 

Exit Do

.

Оператор For Each ...In

С този оператор се организира цикъл, при който се изброяват елементи от група. 

Цикълът се изпълнява толкова пъти, колкото са елементите в групата. Най­често се 

използва за работа с обекти колекции. Общият вид на оператора е:

For Each 

елемент 

In 

група

 

оператори

Next 

[

елемент

]

На 

елемент 

се присвоява първият елемент от 

група 

и операторите в цикъла се 

изпълняват. След това, на 

елемент 

се присвоява вторият елемент от 

група 

и това се 

повтаря, докато се изчерпят елементите в 

група. 

Например, за да се затворят всички 

отворени книги в 

Excel:

For Each 

Book 

In 

Workbooks

Book.Close

Next

Подпрограми

Програмният код във VBA е обособен в самостоятелни единици, наречени 

подпрограми. Съществуват два вида подпрограми ­ функции 

(Function) 

и процедури 

(

Sub

). Всяка подпрограма има заглавен ред, в който се включва:

тип (област на действие), 

име на процедурата

списък от параметри. 

След това се записват последователно операторите и подпрограмата завършва със 
заключителен ред. 

Разликата между двата вида подпрограми се състои в това, че при изпълнение на 

подпрограма 

Function 

на нейното име се присвоява резултатна стойност (т.е. функцията

връща стойност), докато при подпрограма 

процедурата

(

Sub

) само се изпълняват 

включените в нея оператори.

Типът на подпрограмата задава област на действие, която се определя със 

служебните думи 

Private

 (частна) и 

Public

 (публична). Ако не се посочи типът на 

14

background image

подпрограмата, тя автоматично се смята за 

Public

. Разликата е в това, че 

Private

 

подпрограмата може да се извиква само в модула, в който е записана, a 

Public

 

подпрограмата може да се извиква и от другите модули в проекта или от други проекти.

Подпрограми – Функции(Function)

Заглавният ред на една функция има следния вид:

[

Public

 или 

Private

Function 

име

 (параметьр 

As

 тип, параметър2 

As

 тип2,...) 

As

тип_на_върнатата_стойност

където квадратните скоби означават, че тази част не е задължителна, а 

име 

е името на 

функцията, което е уникално. Краят на функцията се обявява със заключителен ред, 
който има вида:

End Function

Функцията не може да се стартира самостоятелно, тя трябва да се „извика" от 

друга процедура чрез нейното име. В скобите след името параметрите се заменят с 
конкретни стойности, наречени аргументи. Например, функцията Broj прибавя 1 към 

първоначалната стойност на параметъра nom:

     

Function 

Broj (nom As 

Integer) 

As

 Integer

     

Broj = nom + 1 

     

End Function

Ако в друга процедура е включен операторът 

Index 

= Broj(10), функцията ще се 

изпълни, като параметърът nom ще се замести с аргумента 10. В резултат 

Index

 ще 

получи стойност 11.

В разгледания пример функцията връща стойност и участва в израз на оператор 

за присвояване. Функциите могат да извършват и много други действия, освен да 
определят стойност. Ако при извикване на функцията, аргументите не се поставят в 

скоби, тогава резултатната стойност не се запазва.

Подпрограми – Процедури

(

Sub

)

Заглавният ред на една подпрограма има следни вид:

[

Public

 или 

Private

Sub 

име

(параметьр1 

As

 тип1, параметьр2 

As

 тип2,...)

където 

име 

е името на подпрограмата, което е уникално. За край на подпрограмата се 

използва операторът 

End Sub

Подпрограмите могат да се извикват от други процедури с помощта на 

оператора:

Call 

име

(аргумент1, аргумент2,...)

или

име

 аргумент1, аргумент2,...

Както при функциите, аргументите представляват конкретни стойности, които се

присвояват на параметрите. Аргументите трябва да съответстват на параметрите както 
по брой и тип, така и по подреждане в списъка. В следващия пример, е показана 

подпрограма, в която на променливата sp се присвоява стойност.

Sub

 lme(spec 

As

 

string

)

15

Това е само предварителен преглед!

Алчни алгоритми (Greedy algorithms)

Евристичните алгоритми насочват към един от вcичките подслучаи на задачата и се надяват той да се окаже единственото решение, като гледат задачата от локален критерий за оптималноcт. Към тях спадат и алчните алгоритми...

Алчни алгоритми (Greedy algorithms)

Предмет: Анализ на алгоритми
Тип: Курсови работи
Брой страници: 51
Брой думи: 7015
Брой символи: 40680
Изтегли
Този сайт използва бисквитки, за да функционира коректно
Ние и нашите доставчици на услуги използваме бисквитки (cookies)
Прочети още Съгласен съм