HTML, Excel, Word, SEOÎñíîâû VBA ⇒ Ôóíêöèè-ïðîöåäóðû VBA

Îñíîâû VBA

Ñàìîó÷èòåëü vba: Òåîðèÿ
..Ïåðâûé ìàêðîñ â Word
..Ýòàïû çàïèñè ìàêðîñà
..Çàïèñü ìàêðîñà â Word
..Çàïèñü ìàêðîñà â Excel
..Êîä ìàêðîñà
..Âûïîëíåíèå ìàêðîñà
..Òèïû äàííûõ VBA
..Ïåðåìåííûå VBA
..Êîíñòàíòû VBA
..Ñîâìåñòèìîñòü òèïîâ äàííûõ
..Àðèôìåòè÷åñêèå îïåðàòîðû
..Ëîãè÷åñêèå îïåðàòîðû
..Ñòðîêîâûå îïåðàòîðû
..Ôóíêöèè VBA ÷.1
..Ôóíêöèè VBA ÷.2
..Ïðèìåðû èñïîëüçîâàíèÿ ôóíêöèé
..Ôóíêöèè host-ïðèëîæåíèé
..Ôóíêöèè-ïðîöåäóðû
..Ïîëüçîâàòåëüñêèå ôóíêöèè â Excel
..Îïåðàòîðû âåòâëåíèÿ: ïðîñòîé âûáîð
..Îïåðàòîðû âåòâëåíèÿ: ñëîæíûé âûáîð
..Èñïîëüçîâàíèå MsgBox
..Ïðåðûâàíèå ïðîöåäóð è ôóíêöèé
..Íåîáÿçàòåëüíûå àðãóìåíòû ôóíêöèé
..Öèêëû VBA ÷.1
..Öèêëû ÷.2
..Öèêëû ÷.3
..Ìàññèâû VBA ÷.1
..Ìàññèâû ÷.2
..Ìàññèâû ÷.3
..Óïðàâëåíèå ôàéëàìè ñ ïîìîùüþ VBA
Ñàìîó÷èòåëü vba: Ïðàêòèêà
Èãðà: Öåïíàÿ ðåàêöèÿ
Ïðèëîæåíèÿ
..Ñóììàòîð
..Íàêëåéêè
..Âîñüìåðêà
..Ìåíåäæåð ïî÷òû
Íàäñòðîéêè
..DEF
..SortSheets
..HideSheet

 

Ôóíêöèè-ïðîöåäóðû VBA


Ôóíêöèÿ-ïðîöåäóðà - ýòî îñîáûé âèä ïðîöåäóðû VBA, âîçâðàùàþùåé ðåçóëüòàò. Ïîëüçîâàòåëüñêèå ôóíêöèè-ïðîöåäóðû, êàê è âñòðîåííûå ôóíêöèè VBA, ìîãóò èìåòü íåîáÿçàòåëüíûå è èìåíîâàííûå àðãóìåíòû. Äëÿ çàïèñè ôóíêöèè-ïðîöåäóðû íåëüçÿ èñïîëüçîâàòü ìàêðîðåêîðäåð, õîòÿ ìîæíî ðåäàêòèðîâàòü çàïèñàííûé ðåêîðäåðîì ìàêðîñ è ïðåâðàùàòü åãî â ôóíêöèþ-ïðîöåäóðó.

Îñíîâíîå ðàçëè÷èå ìåæäó ôóíêöèåé-ïðîöåäóðîé è äðóãèìè ïðîöåäóðàìè, ïîìèìî òîãî, ÷òî ôóíêöèè âîçâðàùàþò çíà÷åíèå, à ïðîöåäóðû - íåò, ñîñòîèò â òîì, ÷òî â ôóíêöèè-ïðîöåäóðå èñïîëüçóþòñÿ êëþ÷åâûå ñëîâà Function è End Function.

Ñèíòàêñèñ:


Function Name([Arglist]) [As Type]
'VBA Statements
[Name = expression]
End Function

Function - êëþ÷åâîå ñëîâî, îáúÿâëÿþùåå íà÷àëî ôóíêöèè.

Name - èìÿ ôóíêöèè. Èìåíà ôóíêöèé ñëåäóþò òåì æå ïðàâèëàì, ÷òî è èìåíà äðóãèõ èäåíòèôèêàòîðîâ VBA.

Arglist - ñïèñîê àðãóìåíòîâ äàííîé ôóíêöèè, íåîáÿçàòåëüíûé ýëåìåíò.

Type - ëþáîé òèï âîçâðàùàåìîãî çíà÷åíèÿ ôóíêöèè. Åñëè òèï íå îïðåäåëåí, ðåçóëüòàò, êîòîðûé âîçâðàùàåò ôóíêöèÿ-ïðîöåäóðà, èìååò òèï Variant.

Name = expression - ïðèñâàèâàíèå ôóíêöèè, êîòîðîå óêàçûâàåò VBA, êàêîå çíà÷åíèå äîëæíà âîçâðàùàòü ôóíêöèÿ, íåîáÿçàòåëüíûé ýëåìåíò. Òåì íå ìåíåå, âñåãäà ñëåäóåò âêëþ÷àòü îïåðàòîð ïðèñâàèâàíèÿ â ôóíêöèè-ïðîöåäóðû.

End Function - êëþ÷åâûå ñëîâà, çàêàí÷èâàþùèå ôóíêöèþ.


Äàæå åñëè ôóíêöèÿ íå èìååò àðãóìåíòîâ (íàïðèìåð, Now, Date) â îáúÿâëåíèè ôóíêöèè íåîáõîäèìî èñïîëüçîâàòü êðóãëûå ñêîáêè.

Îáû÷íî ôóíêöèÿ ïðåäíàçíà÷àåòñÿ äëÿ âûïîëíåíèÿ âû÷èñëåíèÿ è äëÿ âîçâðàùåíèÿ ðåçóëüòàòà. Ïðè îáúÿâëåíèè ôóíêöèè-ïðîöåäóðû óêàçûâàåòñÿ èìÿ êàæäîãî àðãóìåíòà, ïåðåäàâàåìîãî ôóíêöèè. Èìåíà àðãóìåíòîâ â ñïèñêå îòäåëÿþòñÿ äðóã îò äðóãà çàïÿòîé è äîëæíû ñëåäîâàòü ïðàâèëàì, ïðèìåíÿåìûì ê ëþáîìó èäåíòèôèêàòîðó VBA.


Íèæå ïðåäñòàâëåí ëèñòèíã èñïîëüçîâàíèÿ ïðîñòåéøåé ôóíêöèè-ïðîöåäóðû, êîòîðàÿ óáèðàåò íà÷àëüíûå è êîíå÷íûå ïðîáåëû è ïîäñ÷èòûâàåò êîëè÷åñòâî ñèìâîëîâ â âûðàæåíèè.



Áåç èñïîëüçîâàíèÿ ôóíêöèè ëèñòèíã áû âûãëÿäåë òàê:



Èç ýòîãî ïðîñòîãî ïðèìåðà, äóìàþ, ïîíÿòíà îñíîâíàÿ èäåÿ èñïîëüçîâàíèÿ ôóíêöèé-ïðîöåäóð - óëó÷øåíèå ÷èòàáåëüíîñòè ïðîãðàììíîãî êîäà è åãî ñîêðàùåíèå (äðóãèìè ñëîâàìè, ôóíêöèÿ-ïðîöåäóðà ïèøåòñÿ êîãäà â ïðîãðàììíîì êîäå áîëåå 2-3 ðàç âñòðå÷àåòñÿ îäèí è òîò æå "êóñîê" êîäà). Äåéñòâèòåëüíî, åñëè áû íàøà ôóíêöèÿ-ïðîöåäóðà ñîñòîÿëà íå èç îäíîé ñòðîêè, à, ñêàæåì, èç 10 ñòðîê; è ïðîãðàììíûé êîä èñïîëüçîâàë áû ýòó ôóíêöèþ-ïðîöåäóðó 5 ðàç, òî îáùèé ëèñòèíã ïðîãðàììû áûë áû ìåíüøå íà 38 ñòðîê.


Êàê óæå óêàçûâàëîñü ðàíåå, VBA ïåðåäàåò âñå àðãóìåíòû â ôóíêöèþ-ïðîöåäóðó êàê òèïû Variant. Ìîæíî îáúÿâëÿòü îïðåäåëåííûå òèïû äàííûõ äëÿ êàæäîãî àðãóìåíòà â ñïèñêå àðãóìåíòîâ.



Àðãóìåíòû ñ îïðåäåëåííûìè òèïàìè èñïîëüçóþòñÿ ïî òåì æå çíàêîìûì ïðè÷èíàì, ïî êàêèì èñïîëüçóþòñÿ òèïèçèðîâàííûå ïåðåìåííûå èëè ðåçóëüòàòû ôóíêöèè. Îïðåäåëåíèå òèïîâ àðãóìåíòîâ äëÿ ôóíêöèè-ïðîöåäóðû òàêæå ïîìîãàåò ïîëüçîâàòåëþ ïðè âûçîâå ôóíêöèè ââîäèòü àðãóìåíòû ïðàâèëüíîãî òèïà â ïðàâèëüíîì ïîðÿäêå.




 íà÷àëî ñòðàíèöû



 íà÷àëî ñòðàíèöû