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

Vr ñïá mir âèðòóàëüíàÿ ðåàëüíîñòü â ñïá.  

Ïåðåìåííûå VBA


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

Äëÿ ëó÷øåãî ïîíèìàíèÿ ïåðåìåííîé ìîæíî ïðîâåñòè àíàëîãèþ, ñêàæåì, ñ àâòîìàòè÷åñêîé êàìåðîé õðàíåíèÿ íà âîêçàëå. ß÷åéêè êàìåðû, êàê èçâåñòíî, ïðîíóìåðîâàíû - ýòî "èìÿ" ïåðåìåííîé (â îòëè÷èå îò êàìåðû õðàíåíèÿ, ìû ìîæåì ñàìè ïðèñâàèâàòü îïðåäåëåííîå èìÿ ïåðåìåííîé). Òî, ÷òî ëåæèò â ÿ÷åéêå êàìåðû õðàíåíèÿ - ýòî çíà÷åíèå ïåðåìåííîé. Îíî ìîæåò ìåíÿòüñÿ, íî íîìåð ÿ÷åéêè (èìÿ ïåðåìåííîé) îñòàåòñÿ îäíèì è òåì æå.

Èìÿ ïåðåìåííîé

Ïðè âûáîðå èìåíè ïåðåìåííîé íåîáõîäèìî ñîáëþäàòü îïðåäåëåííûå ïðàâèëà:

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

Ñîçäàíèå ïåðåìåííîé

Ñàìûì ïðîñòûì ñïîñîáîì ñîçäàíèÿ ïåðåìåííîé ÿâëÿåòñÿ èñïîëüçîâàíèå åå â îïåðàòîðå VBA. Ïðè ýòîì VBA ñîçäàåò ïåðåìåííóþ è ðåçåðâèðóåò ïàìÿòü äëÿ ïåðåìåííîé. Ñîõðàíåíèå çíà÷åíèÿ äàííûõ â ïåðåìåííîé íàçûâàåòñÿ ïðèñâàèâàíèåì ïåðåìåííîé. Äåëàåòñÿ ýòî ñ ïîìîùüþ îïåðàòîðà ïðèñâàèâàíèÿ (=).


Íàïðèìåð: Sum=120


Ýòîò îïåðàòîð ñîõðàíÿåò ÷èñëåííîå çíà÷åíèå 120 â ÿ÷åéêå ïàìÿòè, çàäàííîé ïåðåìåííîé Sum.

Òàêîå îáúÿâëåíèå ïåðåìåííîé íàçûâàåòñÿ "íåÿâíûì îáúÿâëåíèåì ïåðåìåííîé" èëè "îáúÿâëåíèå ïåðåìåííîé íà ëåòó". Âñå ïåðåìåííûå, êîòîðûå VBA ñîçäàåò ïîäîáíûì îáðàçîì, èìåþò òèï äàííûõ Variant.

Íåÿâíîå îáúÿâëåíèå ïåðåìåííîé ìîæåò âûçâàòü ìàññó ïðîáëåì âî âðåìÿ îòëàäêè ïðîãðàììíîãî êîäà, ïîýòîìó, òàêîé ñïîñîá ïðîãðàììèðîâàíèÿ íå ðåêîìåíäóåòñÿ. Â íåêîòîðûõ ÿçûêàõ ïðîãðàììèðîâàíèÿ âîîáùå íåëüçÿ îáúÿâëÿòü ïåðåìåííûå íåÿâíûì ñïîñîáîì.

Ïîýòîìó, VBA ïðåäîñòàâëÿåò âîçìîæíîñòü âûïîëíèòü ÿâíîå îáúÿâëåíèå ïåðåìåííîé. Ýòî íåñåò ñëåäóþùèå ïðåèìóùåñòâà:

Äëÿ ÿâíîãî îáúÿâëåíèÿ ïåðåìåííîé èñïîëüçóåòñÿ îïåðàòîð Dim (Dimension).


Ñèíòàêñèñ:

Dim name1 [, name2…]

nameN - ëþáîé äîïóñòèìûé èäåíòèôèêàòîð ïåðåìåííîé.
Èäåíòèôèêàòîð - ýòî èìÿ, êîòîðîå äàåòñÿ ýëåìåíòàì â ñîçäàâàåìûõ ïðîöåäóðàõ è ìîäóëÿõ, òàêèì êàê ïåðåìåííûå. Ýòî îáóñëîâëåíî òåì ôàêòîì, ÷òî ñîçäàâàåìûå èìåíà îïðåäåëÿþò êîíêðåòíûå ó÷àñòêè ïàìÿòè (èìÿ ïåðåìåííîé), ãðóïïû èíñòðóêöèé (ìàêðîñ èëè ïðîöåäóðà).

Íàïðèìåð:
Dim MyValue
Dim Value_1, Value_2


Âñå ïåðåìåííûå, ñîçäàííûå ïîäîáíûì îáðàçîì, ÿâëÿþòñÿ ïåðåìåííûìè òèïà Variant.

Êîãäà VBA ñîçäàåò íîâóþ ïåðåìåííóþ, ýòà ïåðåìåííàÿ èíèöèàëèçèðóåòñÿ (ïåðåìåííîé ïðèñâàèâàåòñÿ íåêîòîðîå çíà÷åíèå "ïî óìîë÷àíèþ"):

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





Òèïèçèðîâàííûå ïåðåìåííûå

Âñå ïåðåìåííûå â VBA, íåçàâèñèìî îò òîãî, îáúÿâëÿþòñÿ ëè îíè íåÿâíî èëè ÿâíî, ÿâëÿþòñÿ ïåðåìåííûìè òèïà Variant, åñëè òîëüêî íå çàäàåòñÿ òèï ïåðåìåííîé â îáúÿâëÿþùåì åå îïåðàòîðå. Îáúÿâëåíèå òèïèçèðîâàííûõ ïåðåìåííûõ èìååò ðÿä ïðåèìóùåñòâ:

Òèï ïåðåìåííîé îáúÿâëÿåòñÿ â òîì æå îïåðàòîðå, êîòîðûé èñïîëüçóåòñÿ äëÿ îáúÿâëåíèÿ ñàìîé ïåðåìåííîé. Ìîæíî îáúÿâëÿòü òèïèçèðîâàííóþ ïåðåìåííóþ ëèáî ïðè íåÿâíîì îáúÿâëåíèè, ëèáî ïðè ÿâíîì - ñ ïîìîùüþ îïåðàòîðà Dim.

Äëÿ îáúÿâëåíèÿ ïåðåìåííîé è åå òèïà ñ ïîìîùüþ îïåðàòîðà Dim íåîáõîäèìî äîáàâèòü êëþ÷åâîå ñëîâî As ïåðåä èìåíåì ïåðåìåííîé, à çàòåì ââåñòè èìÿ òèïà äàííûõ äëÿ ýòîé ïåðåìåííîé.


Ñèíòàêñèñ:

Dim varname_1 [As type1] [, varname_2 [As type2]..]


Varname_N - ëþáîå äîïóñòèìîå èìÿ ïåðåìåííîé

Type_N - ëþáîå èç èìåí òèïîâ äàííûõ VBA



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


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


Ñèíòàêñèñ:

Dim varname As String * N


Varname - ëþáîå äîïóñòèìîå èìÿ ïåðåìåííîé

N - öåëîå ÷èñëî, óêàçûâàþùåå äëèíó ñòðîêè

Îáëàñòü äåéñòâèÿ ïåðåìåííûõ

Ëþáàÿ ïåðåìåííàÿ èìååò ñâîþ îáëàñòü äåéñòâèÿ.

Òåðìèí îáëàñòü äåéñòâèÿ îòíîñèòñÿ ê îáëàñòè ïðîöåäóðû èëè ìîäóëÿ VBA, ãäå äàííàÿ ïåðåìåííàÿ, ïðîöåäóðà èëè äðóãîé èäåíòèôèêàòîð, ÿâëÿþòñÿ äîñòóïíûìè.

Ïåðåìåííûå, ïðîöåäóðû è èäåíòèôèêàòîðû, êîòîðûå äîñòóïíû òîëüêî â ïðîöåäóðå, èìåþò îáëàñòü äåéñòâèÿ ïðîöåäóðíîãî óðîâíÿ, à òå, êîòîðûå äîñòóïíû äëÿ âñåõ ïðîöåäóð â ìîäóëå, èìåþò îáëàñòü äåéñòâèÿ ìîäóëüíîãî óðîâíÿ.



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

 ïåðâîé ñòðîêå, ïðèâåäåííîãî âûøå ëèñòèíãà, îáúÿâëåíà ïåðåìåííàÿ À ìîäóëüíîãî òèïà. Îäíàêî â ïðîöåäóðå example_02 èìååòñÿ ñâîå îáúÿâëåíèå ïåðåìåííîé À. VBA âûáèðàåò íàèáîëåå ëîêàëüíóþ ïåðåìåííóþ À, îáúÿâëåííóþ êàê ïåðåìåííàÿ ïðîöåäóðíîãî óðîâíÿ.

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


Åñëè âû õîòèòå âñåãäà èñïîëüçîâàòü òîëüêî ÿâíîå îáúÿâëåíèå ïåðåìåííûõ, òî äëÿ òàêèõ öåëåé VBA ïðåäîñòàâëÿåò êîìàíäó Option Explicit. Ïðè èñïîëüçîâàíèè Option Explicit VBA òðåáóåò îáúÿâëåíèÿ âñåõ ïåðåìåííûõ ïåðåä èõ èñïîëüçîâàíèåì.



 íàñòðîéêàõ ðåäàêòîðà VBA ìîæíî óêàçàòü, ÷òîáû êîìàíäà Option Explicit àâòîìàòè÷åñêè âêëþ÷àëàñü â íîâûé ìîäóëü.






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



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