Êîíñòàíòû VBA
Êîíñòàíòà - ýòî çíà÷åíèå â ïðîãðàììå VBA, êîòîðîå íå èçìåíÿåòñÿ.
Êîíñòàíòû ìîæíî èñïîëüçîâàòü êàê àðãóìåíòû äëÿ ïðîöåäóð, â ìàòåìàòè÷åñêèõ îïåðàöèÿõ, îïåðàöèÿõ ñðàâíåíèÿ è ïð.
Êîíñòàíòû áûâàþò ëèòåðàëüíûìè è èìåíîâàííûìè.
Ëèòåðàëüíàÿ êîíñòàíòà - ýòî êîíñòàíòà (÷èñëî, ñòðîêîâîå âûðàæåíèå, äàòà), ðàñïîëîæåííàÿ íåïîñðåäñòâåííî â êîäå.
Íàïðèìåð: X = Y + 2
Çäåñü ÷èñëî 2 ÿâëÿåòñÿ ëèòåðàëüíîé êîíñòàíòîé.
Èìåíîâàííàÿ êîíñòàíòà, êàê ïðàâèëî, îáúÿâëÿåòñÿ â íà÷àëå ìîäóëÿ èëè ïðîöåäóðû (àíàëîãè÷íî ïåðåìåííîé) è ïðåäíàçíà÷åíà äëÿ óäîáñòâà ÷èòàíèÿ è ïîíèìàíèÿ ïðîãðàììíîãî êîäà. Íàïðèìåð, áîëåå öåëåñîîáðàçíî èñïîëüçîâàòü â êîäå ïðîãðàììû èìåíîâàííóþ êîíñòàíòó Pi (êîòîðîé ïðèñâîåíî çíà÷åíèå 3,14), ÷åì ëèòåðàëüíóþ êîíñòàíòó 3,14. Ñîãëàñèòåñü, ÷òî âûðàæåíèå
S = Pi * R* R
Áîëåå "ïîíÿòíî", ÷åì
S = 3.14 * R * R
Äðóãèì âåñêèì ôàêòîðîì â ïîëüçó èìåíîâàííûõ êîíñòàíò ñëóæèò òî îáñòîÿòåëüñòâî, ÷òî èçìåíèâ çíà÷åíèå êîíñòàíòû îäèí ðàç, ýòè èçìåíåíèÿ ìãíîâåííî ïðîèçîéäóò âî âñåì ïðîãðàììíîì êîäå. Ëèòåðàëüíóþ êîíñòàíòó íàäî èñêàòü è èçìåíÿòü â òåëå êîäà "âðó÷íóþ", íà ÷òî ìîæåò óéòè äîâîëüíî çíà÷èòåëüíîå âðåìÿ.
Îäíàêî íå ñòîèò èñïîëüçîâàòü èìåíîâàííûå êîíñòàíòû ñïëîøü è ðÿäîì, ò.ê. êîä ìîæåò ñòàòü àáñîëþòíî íå÷èòàáåëüíûì, à âû ñàìè çàïóòàåòåñü, ÷òî è ãäå íàõîäèòñÿ.
Ëèòåðàëüíûå êîíñòàíòû
Ñóùåñòâóåò íåñêîëüêî ïðàâèë, êîòîðûå íåîáõîäèìî ñîáëþäàòü ïðè íàïèñàíèè ëèòåðàëüíûõ êîíñòàíò.
Êîíñòàíòû String
- Ñòðîêîâûå êîíñòàíòû äîëæíû áûòü çàêëþ÷åíû â äâîéíûå êàâû÷êè (");
- Ïóñòàÿ ñòðîêîâàÿ êîíñòàíòà (òàê íàçûâàåìàÿ "íóëåâàÿ ñòðîêà") îáîçíà÷àåòñÿ äâóìÿ äâîéíûìè êàâû÷êàìè, ìåæäó êîòîðûìè íè÷åãî íåò ("");
- Ñòðîêîâàÿ êîíñòàíòà îáÿçàòåëüíî äîëæíà âñÿ íàõîäèòüñÿ íà îäíîé ñòðîêå.
×èñëåííûå êîíñòàíòû
- ×èñëåííûå êîíñòàíòû ìîãóò ñîäåðæàòü ëþáîé èç ÷èñëåííûõ òèïîâ VBA;
- ×èñëåííûå êîíñòàíòû äîëæíû ñîñòîÿòü òîëüêî èç ÷èñëîâûõ ñèìâîëîâ îò 0 äî 9;
- ×èñëåííàÿ êîíñòàíòà ìîæåò íà÷èíàòüñÿ ñî çíàêà (-) è ìîæåò ñîäåðæàòü äåñÿòè÷íóþ òî÷êó;
- Ìîæíî èñïîëüçîâàòü ýêñïîíåíöèàëüíîå ïðåäñòàâëåíèå äëÿ ÷èñëåííûõ êîíñòàíò;
- Íèêàêèå äðóãèå ñèìâîëû èëè çíàêè íå äîïóñêàþòñÿ â ÷èñëåííûõ êîíñòàíòàõ.
Êîíñòàíòû Date
- Êîíñòàíòû Date íåîáõîäèìî ïîìåùàòü ìåæäó çíàêàìè ôóíòà (#), ïðè ýòîì ôîðìàò çàäàíèÿ äàòû ìîæåò áûòü ðàçëè÷íûì:
#3-5-99#
#February 13, 2008 10:15am#
#Jun-20-2005#
# 9 April 1998# - VBA ïåðåôîðìàòèðóåò äàòó ê ñëåäóþùåìó âèäó: #4/9/1998#
- Åñëè ïðîïóñòèòü çíàê ôóíòà (#) ïðè çàïèñè ëèòåðàëüíîé êîíñòàíòû äàòû, VBA íå ñìîæåò ïðàâèëüíî èíòåðïðåòèðîâàòü êîíñòàíòó äàòû êàê äàòó;
- Íåëüçÿ çàêëþ÷àòü ëèòåðàëüíûå êîíñòàíòû äàòû â äâîéíûå êàâû÷êè, ò.ê. â ýòîì ñëó÷àå VBA ðàñïîçíàåò òàêóþ êîíñòàíòó êàê ñòðîêîâóþ.
Êîíñòàíòû Boolean
Ñóùåñòâóþò òîëüêî äâà âèäà êîíñòàíò òèïà Boolean: True, False. Ïðè ýòîì èõ íåëüçÿ áðàòü â êàâû÷êè èëè ñîêðàùàòü.
Èìåíîâàííûå êîíñòàíòû
Ïðè ñîçäàíèè è îáúÿâëåíèè èìåíîâàííûõ êîíñòàíò íàäî ïðèäåðæèâàòüñÿ òåõ æå ïðèíöèïîâ, ÷òî è ïðè ðàáîòå ñ ïåðåìåííûìè.
Äëÿ îáúÿâëåíèÿ èìåíîâàííîé êîíñòàíòû ïðåäíàçíà÷åíî êëþ÷åâîå ñëîâî Const
Ñèíòàêñèñ
Const name_1 = value_1 [opetator name_2..] [, name_3 =..]
Name_N - ëþáîé äîïóñòèìûé èäåíòèôèêàòîð èìåíè êîíñòàíòû;
Value_N - ëþáîå çíà÷åíèå äàííûõ;
Opetator - àðèôìåòè÷åñêàÿ èëè îïåðàöèÿ ñðàâíåíèÿ ìåæäó äâóìÿ èìåíàìè ðàíåå îïèñàííûõ êîíñòàíò.
Îáëàñòü äåéñòâèÿ èìåííûõ êîíñòàíò àíàëîãè÷íà ïåðåìåííûì, ò.å. êîíñòàíòû áûâàþò ïðîöåäóðíîãî è ìîäóëüíîãî óðîâíÿ.
Ïîñêîëüêó îäíîé èç ãëàâíûõ öåëåé èñïîëüçîâàíèÿ èìåíîâàííîé êîíñòàíòû ÿâëÿåòñÿ ïðåäîòâðàùåíèå ïîâòîðåíèÿ èëè äóáëèðîâàíèÿ ëèòåðàëüíûõ êîíñòàíò, êàê ïðàâèëî, áûâàåò íåîáõîäèìî, ÷òîáû èìåíîâàííûå êîíñòàíòû áûëè äîñòóïíû âñåì ïðîöåäóðàì â ìîäóëå. Ïîýòîìó öåëåñîîáðàçíî ïîìåùàòü îáúÿâëåíèÿ êîíñòàíò íà ìîäóëüíîì óðîâíå, ÷òîáû ó íèõ áûëà íàèáîëüøàÿ îáëàñòü äåéñòâèÿ.

Çàäàíèå òèïà êîíñòàíòû
Êîãäà îáúÿâëÿåòñÿ èìåíîâàííàÿ êîíñòàíòà èëè èñïîëüçóåòñÿ ëèòåðàëüíàÿ, VBA âîñïðèíèìàåò ýòó êîíñòàíòó òåì òèïîì, êîòîðûé íàèáîëåå ñîãëàñóåòñÿ ñ åå çíà÷åíèåì.
 VBA ìîæíî çàäàâàòü òèï êîíñòàíòû (ïî àíàëîãèè ñ ïåðåìåííûìè). Íî â îòëè÷èå îò ïåðåìåííûõ íåëüçÿ çàäàâàòü òèïû Object è Array. Íàïðèìåð, â âûøåïðèâåäåííîì ëèñòèíãå âïîëíå óìåñòíî êîíñòàíòå Pi çàäàòü òèï Single
Const Pi As Single = 3.14
Âíóòðåííèå êîíñòàíòû
Âíóòðåííÿÿ êîíñòàíòà - ýòî èìåíîâàííàÿ êîíñòàíòà, êîòîðàÿ áûëà îïðåäåëåíà ðàçðàáîò÷èêàìè VBA.
Ïîìèìî âíóòðåííèõ êîíñòàíò VBA ñóùåñòâóþò âíóòðåííèå êîíñòàíòû äëÿ ðàáîòû ñ host-ïðèëîæåíèÿìè. Òàê, Excel ñîäåðæèò âíóòðåííèå êîíñòàíòû äëÿ èñïîëüçîâàíèÿ ñ ðàáî÷èìè êíèãàìè ýëåêòðîííûõ òàáëèö. Àíàëîãè÷íî, Word ñîäåðæèò âíóòðåííèå êîíñòàíòû äëÿ ðàáîòû ñ äîêóìåíòàìè è øàáëîíàìè òåêñòîâîãî ðåäàêòîðà, à Access - äëÿ îïåðàöèé ñ áàçàìè äàííûõ.
Âíóòðåííèå êîíñòàíòû, îïðåäåëÿåìûå VBA, íà÷èíàþòñÿ ñ áóêâ vb. Âíóòðåííèå êîíñòàíòû Excel - xl; Word - wd.
Âíóòðåííèå êîíñòàíòû, îïðåäåëÿåìûå host-ïðèëîæåíèåì VBA (íàïðèìåð, Excel, Word) óïðîùàþò èñïîëüçîâàíèå ðàçëè÷íûõ ñâîéñòâ è ìåòîäîâ, ïðèíàäëåæàùèõ ýòîìó host-ïðèëîæåíèþ.
Äëÿ òîãî, ÷òîáû óâèäåòü ïîëíûé ñïèñîê èìåþùèõñÿ â íàëè÷èè âíóòðåííèõ êîíñòàíò íåîáõîäèìî èñïîëüçîâàòü Object Browser. Åãî ìîæíî âûçâàòü êëàâèøåé F2 â îêíå ðåäàêòîðà VBA.