HTML, Excel, Word, SEOÎñíîâû 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 (÷.1). Ïîíÿòèå ôóíêöèè.


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

Íå ñëåäóåò ïóòàòü òåðìèíû ôóíêöèÿ è ïðîöåäóðà. Ïðîöåäóðà, êàê ïðàâèëî, âûïîëíÿåò êàêóþ-òî îïðåäåëåííóþ çàäà÷ó (çàäà÷è). Ôóíêöèÿ îïåðèðóåò îïðåäåëåííûìè äàííûìè è âñåãäà âîçâðàùàåò íåêîòîðîå ðåçóëüòèðóþùåå çíà÷åíèå.



 ïðèâåäåííîì âûøå ëèñòèíãå ôóíêöèÿ CStr ïðåîáðàçóåò çíà÷åíèå äðóãîé ôóíêöèè Now (ïîëó÷åíèå ñèñòåìíîé äàòû) â ñòðîêó è ðåçóëüòèðóþùåå çíà÷åíèå ïðèñâàèâàåòñÿ ïåðåìåííîé DT. Îáðàòèòå âíèìàíèå, ÷òî ïåðåìåííàÿ ÒÌ àâòîìàòè÷åñêè ïðåîáðàçóåòñÿ VBA ê ñòðîêîâîìó òèïó â îïåðàòîðå âûâîäà òåêñòîâîãî ñîîáùåíèÿ íà ýêðàí. Ïîäîáíûå "âîëüíîñòè" â ïðîãðàììèðîâàíèè äîñòóïíû äàëåêî íå âî âñåõ ÿçûêàõ, ïîýòîìó, íå ñòîèò èìè çëîóïîòðåáëÿòü, äàáû íå âûðàáîòàòü âðåäíóþ ïðèâû÷êó â íàïèñàíèè "íåðÿøëèâûõ" ïðîãðàììíûõ êîäîâ.

Âû, íàâåðíîå, óæå îáðàòèëè âíèìàíèå, ÷òî íåêîòîðûå ôóíêöèè íå òðåáóþò àðãóìåíòîâ.  âûøåïðèâåäåííîì ëèñòèíãå ôóíêöèè Time, Now íå òðåáóþò íèêàêèõ àðãóìåíòîâ, îíè ïðîñòî âîçâðàùàþò òåêóùèå ñèñòåìíîå âðåìÿ è äàòó.  òî æå âðåìÿ ôóíêöèÿ CStr òðåáóåò íàëè÷èÿ àðãóìåíòà.

Ôóíêöèè, íå òðåáóþùèå àðãóìåíòîâ, ïðîñòî ââîäÿòñÿ â êîä ïðîãðàììû.

Ôóíêöèè, òðåáóþùèå ââîäà îäíîãî èëè íåñêîëüêèõ àðãóìåíòîâ, ââîäÿòñÿ â êîä ïðîãðàììû ñëåäóþùèì îáðàçîì: ïèøåòñÿ íàçâàíèå ôóíêöèè, à çàòåì, â êðóãëûõ ñêîáêàõ ÷åðåç çàïÿòóþ ïåðå÷èñëÿþòñÿ çíà÷åíèÿ àðãóìåíòîâ.

Òèï äàííûõ çíà÷åíèÿ, âîçâðàùàåìîãî ôóíêöèåé, çàâèñèò îò ýòîé êîíêðåòíîé ôóíêöèè. Áîëüøèíñòâî ôóíêöèé âîçâðàùàþò çíà÷åíèÿ òèïà Variant, String, Double, Integer. VBA ìîæåò àâòîìàòè÷åñêè ïðåîáðàçîâûâàòü ðåçóëüòàò êàêîé-ëèáî ôóíêöèè â òèï äàííûõ, ñîâìåñòèìûé ñ äðóãèìè çíà÷åíèÿìè â âûðàæåíèè, ñîäåðæàùåì ýòó ôóíêöèþ. Âñå ïðàâèëà ñîâìåñòèìîñòè òèïîâ äàííûõ, ðàññìîòðåííûå äëÿ êîíñòàíò è ïåðåìåííûõ, ïðèìåíèìû òàêæå ê çíà÷åíèÿì, âîçâðàùàåìûì ôóíêöèÿì.

Èãíîðèðîâàíèå ðåçóëüòàòà ôóíêöèè

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

Èìåííî òàê èñïîëüçóåòñÿ â âûøåïðèâåäåííîì ëèñòèíãå ôóíêöèÿ MsgBox, õîòÿ çäåñü îíà èñïîëüçóåòñÿ â êà÷åñòâå ïðîöåäóðû (ò.ê. íå èñïîëüçóåò âîçâðàùàåìûå çíà÷åíèÿ).

 äåéñòâèòåëüíîñòè æå, VBA ïðåäîñòàâëÿåò íåñêîëüêî âñòðîåííûõ êîíñòàíò äëÿ îïðåäåëåíèÿ êíîïîê â îêíå ñîîáùåíèÿ MsgBox.



Îäíàêî, ðåçóëüòàò âûáîðà ïîëüçîâàòåëÿ îïÿòü íèêàêèì îáðàçîì íå âîçâðàùàåòñÿ è íå èñïîëüçóåòñÿ â äàëüíåéøåì êîäå ïðîãðàììû. Èñïðàâèì ýòîò íþàíñ.



Ïðè âûïîëíåíèè ïîñëåäíåãî ëèñòèíãà VBA ïîñëå îòâåòà ïîëüçîâàòåëÿ (êîòîðûé íàæàë íà îäíó èç òðåõ êíîïîê) çàêðûâàåò îêíî è â ïåðåìåííîé Otvet ñîõðàíÿåò ÷èñëî, ñîîòâåòñòâóþùåå âûáðàííîé êíîïêå.

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

 òî æå âðåìÿ VBA çàïðåùàåò èãíîðèðîâàíèå ðåçóëüòàòà ôóíêöèè, èìÿ êîòîðîé ÿâëÿåòñÿ êëþ÷åâûì ñëîâîì VBA (íàïðèìåð, CStr), è òåõ ôóíêöèé, åäèíñòâåííûì íàçíà÷åíèåì êîòîðûõ ÿâëÿåòñÿ ïðåäîñòàâëåíèå íåêîòîðîãî âîçâðàùàåìîãî çíà÷åíèÿ, íàïðèìåð, ìàòåìàòè÷åñêèõ.

Èìåíîâàííûå àðãóìåíòû ôóíêöèè

Àðãóìåíòû ôóíêöèè íåîáõîäèìî ïåðå÷èñëÿòü â îïðåäåëåííîì ïîðÿäêå. Òàê äëÿ ôóíêöèè MsgBox ïåðâûé àðãóìåíò ÿâëÿåòñÿ ñîîáùåíèåì äëÿ îòîáðàæåíèÿ, âòîðîé - ýòî ÷èñëî è òèï êíîïîê äëÿ äèàëîãîâîãî îêíà, òðåòèé - çàãîëîâîê äèàëîãîâîãî îêíà. Îá ýòîì ïîäñêàçûâàåò âñïëûâàþùåå îêíî "Êðàòêèå ñâåäåíèÿ", ïîÿâëÿþùååñÿ ïðè ââîäå èìåíè ôóíêöèè.



Ñëåäóåò îáðàòèòü âíèìàíèå, ÷òî åñëè âòîðîé (íåîáÿçàòåëüíûé) àðãóìåíò îïóñòèòü, âñå æå íåîáõîäèìî âêëþ÷àòü îòìå÷àþùèå çàïÿòûå äëÿ âòîðîãî àðãóìåíòà â ñïèñîê àðãóìåíòîâ.


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

×òîáû ïðåäîòâðàòèòü ïîäîáíûå îøèáêè, VBA äàåò âîçìîæíîñòü èñïîëüçîâàíèÿ èìåíîâàííûõ àðãóìåíòîâ ôóíêöèé. Îáðàòèòå âíèìàíèå íà ñëåäóþùèé ëèñòèíã.



Îáå ñòðîêè èìåþò îäèí è òîò æå ðåçóëüòàò. Ïåðâûé îïåðàòîð èñïîëüçóåò îáû÷íûé ìåòîä ïåðå÷èñëåíèÿ àðãóìåíòîâ, à âòîðîé - ìåòîä èìåíîâàííûõ àðãóìåíòîâ. Ïðè÷åì, îáðàòèòå, âíèìàíèå, âî âòîðîì ñëó÷àå ïîðÿäîê ñëåäîâàíèÿ àðãóìåíòîâ èçìåíåí.  ìåòîäå èìåíîâàííûõ àðãóìåíòîâ ýòî äîïóñêàåòñÿ.


Ïîëíûé ñèíòàêñèñ ôóíêöèè MsgBox ñëåäóþùèé:


MsgBox (Prompt [, Buttons] [, Title] [, HelpFile, Context])


Åäèíñòâåííûì îáÿçàòåëüíûì àðãóìåíòîì ÿâëÿåòñÿ àðãóìåíò Prompt, êîòîðûé ìîæåò áûòü ëþáûì ñòðîêîâûì âûðàæåíèåì è ñîäåðæèò èíôîðìàöèþ, êîòîðàÿ âûâîäèòñÿ â äèàëîãîâîì îêíå. Âñå îñòàëüíûå àðãóìåíòû - íåîáÿçàòåëüíûå.

Àðãóìåíò Title - ñòðîêà äëÿ çàãîëîâêà äèàëîãîâîãî îêíà.

Àðãóìåíò HelpFile - ñòðîêîâîå âûðàæåíèå, ñîäåðæàùåå èìÿ ñïðàâî÷íîãî ôàéëà Windows (êîòîðûé óæå äîëæåí áûòü ñîçäàí).

Àðãóìåíò Context - ÷èñëåííîå âûðàæåíèå, óêàçûâàþùåå ðàçäåë â ñïðàâî÷íîì ôàéëå, îòíîñÿùèéñÿ ê îòîáðàæàåìîìó äèàëîãîâîìó îêíó.

Àðãóìåíò Buttons - ÷èñëåííîå âûðàæåíèå, êîòîðîå çàäàåò êîëè÷åñòâî è òèï êíîïîê â äèàëîãîâîì îêíå. Òàêæå óêàçûâàåò êíîïêó ïî óìîë÷àíèþ è, ñîäåðæèò ëè ýòî äèàëîãîâîå îêíî ñòàíäàðòíûå çíà÷êè Windows äëÿ ïðåäóïðåäèòåëüíûõ ñîîáùåíèé è çàïðîñîâ ïîëüçîâàòåëÿ.


Àðãóìåíòû-êîíñòàíòû ôóíêöèè MsgBox

Êîíñòàíòà Íàçíà÷åíèå
vbAbortRetryIgnore Îòîáðàæàåò êîìàíäíûå êíîïêè Ñòîï, Ïîâòîð, Ïðîïóñòèòü
vbApplicationModal Äëÿ ïðîäîëæåíèÿ ðàáîòû ñ ïðèëîæåíèåì ïîëüçîâàòåëü äîëæåí îòâåòèòü íà çàïðîñ äèàëîãîâîãî îêíà.
vbCritical Îòîáðàæàåòñÿ îêíî ñ ïðåäóïðåäèòåëüíûì çíà÷êîì êðèòè÷åñêîé îøèáêè.
vbDefaultButton1
vbDefaultButton2
vbDefaultButton3
vbDefaultButton4
Íîìåð êîìàíäíîé êíîïêè â äèàëîãîâîì îêíå ÿâëÿþùåéñÿ êíîïêîé ïî óìîë÷àíèþ.
vbExclamation Æåëòûé çíàê âîïðîñà. Èñïîëüçóåòñÿ äëÿ îòîáðàæåíèÿ âàæíîé èíôîðìàöèè íå òðåáóþùåé îòâåòà.
vbInformation Îòîáðàæàåò çíà÷îê èíôîðìàöèè. Èñïîëüçóåòñÿ äëÿ îòîáðàæåíèÿ ñïðàâî÷íîé èíôîðìàöèè.
vbMsgBoxHelpButton Äîáàâëÿåò ê äèàëîãîâîìó îêíó êíîïêó Ñïðàâêà. Ïðè ùåë÷êå íà ýòîé êíîïêå îòêðûâàåòñÿ ôàéë, êîòîðûé çàäàí â àðãóìåíòå HelpFile, â ðàçäåëå, çàäàííîì àðãóìåíòîì Context.
vbOKCancel Îòîáðàæàåò êíîïêè ÎÊ è Îòìåíà.
vbOKOnly Îòîáðàæàåò òîëüêî êíîïêó ÎÊ - àíàëîãè÷íà ïðîïóñêó àðãóìåíòà Buttons.
vbQuestion Îòîáðàæàåò çíà÷îê âîïðîñà. Èñïîëüçóåòñÿ êîãäà íàäî çàäàòü ïîëüçîâàòåëþ êàêîé-òî âàæíûé âîïðîñ.
vbRetryCancel Îòîáðàæàåò êíîïêè Ïîâòîð è Îòìåíà.
vbSystemModal Äèàëîãîâîå îêíî âñåãäà îñòàåòñÿ âïåðåäè äðóãèõ îêîí ïîêà íå áóäåò çàêðûòî.
vbYesNo Îòîáðàæàåò êíîïêè Äà è Íåò.
vbYesNoCancel Îòîáðàæàåò êíîïêè Äà, Íåò è Îòìåíà.

Âîçâðàùàåìûå çíà÷åíèÿ-êîíñòàíòû ôóíêöèè MsgBox

Êîíñòàíòà Íàçíà÷åíèå
vbAbort Ïîëüçîâàòåëü âûáèðàåò êíîïêó Ñòîï
vbCancel Ïîëüçîâàòåëü âûáèðàåò êíîïêó Îòìåíà
vbIgnore Ïîëüçîâàòåëü âûáèðàåò êíîïêó Ïðîïóñòèòü
vbNo Ïîëüçîâàòåëü âûáèðàåò êíîïêó Íåò
vbOK Ïîëüçîâàòåëü âûáèðàåò êíîïêó ÎÊ
vbRetry Ïîëüçîâàòåëü âûáèðàåò êíîïêó Ïîâòîð
vbYes Ïîëüçîâàòåëü âûáèðàåò êíîïêó Äà

Ôóíêöèÿ InputBox

InputBox - åùå îäíà äîâîëüíî ÷àñòî èñïîëüçóåìàÿ ôóíêöèÿ äëÿ îáìåíà äàííûìè ñ ïîëüçîâàòåëåì.

Ïîëíûé ñèíòàêñèñ ôóíêöèè InputBox ñëåäóþùèé:


InputBox (Prompt [, Title] [, Default] [, XPos] [, YPos] [, HelpFile, Context])


Àðãóìåíòû Prompt (åäèíñòâåííûé îáÿçàòåëüíûé àðãóìåíò), Title, HelpFile, Context - àíàëîãè÷íû óæå ðàññìîòðåííûì îäíîèìåííûì àðãóìåíòàì ôóíêöèè MsgBox.

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

Àðãóìåíòû XPos, YPos - ëþáûå ÷èñëåííûå âûðàæåíèÿ. Ýòè àðãóìåíòû çàäàþò êîîðäèíàòû âûâîäà äèàëîãîâîãî îêíà íà ýêðàíå ìîíèòîðà. XPos - ãîðèçîíòàëüíîå ðàññòîÿíèå îò ëåâîãî êðàÿ îêíà. YPos - âåðòèêàëüíîå ðàññòîÿíèå îò âåðõíåãî êðàÿ îêíà. Îáà ðàññòîÿíèÿ èçìåðÿþòñÿ â òâèïàõ (1 òâèï = 1/20 òî÷êè = 0,0007 äþéìà). Ñëåäóåò áûòü âíèìàòåëüíûì ïðè èñïîëüçîâàíèè ýòèõ àðãóìåíòîâ, ò.ê. ïðè èõ áîëüøèõ çíà÷åíèÿõ äèàëîãîâîå îêíî ìîæåò "óåõàòü" çà ïðåäåëû ýêðàíà ìîíèòîðà.

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



Ïðè âûçîâå InputBox ìîæíî èñïîëüçîâàòü èìåíîâàííûå àðãóìåíòû.

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




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



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