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

vps ñåðâåð ÎÀÝ. Ïîìîãàåì âûáðàòü ñòàáèëüíîãî ïðîâàéäåðà çäåñü  

Ìàññèâû VBA (÷.2). Îáúÿâëåíèå è èñïîëüçîâàíèå ìàññèâîâ


Îáúÿâëåíèå ìàññèâîâ

Îáúÿâëåíèå ìàññèâà ñ èñïîëüçîâàíèåì îïåðàòîðà Dim èìååò ñëåäóþùèé ñèíòàêñèñ:


Dim VarName([Subscripts]) [As Type]

VarName - ëþáîå èìÿ ìàññèâà, èñïîëüçóþùåå äîïóñòèìûé èäåíòèôèêàòîð èìåíè;
Subscripts - èçìåðåíèå ìàññèâà. Åñëè ðàçìåðíîñòü ìàññèâà áîëüøå åäèíèöû, òî Subscripts ðàçäåëÿþòñÿ çàïÿòûìè.


Îïåðàòîð Subscripts èìååò ñëåäóþùèé ñèíòàêñèñ:


[lower To] upper [,[lower To] upper]..

lower - îïðåäåëÿåò íèæíèé äèàïàçîí äîïóñòèìûõ èíäåêñîâ äëÿ ìàññèâà (íåîáÿçàòåëüíûé àðãóìåíò);
upper - îïðåäåëÿåò âåðõíèé ïðåäåë äëÿ èíäåêñîâ ìàññèâà (îáÿçàòåëüíûé àðãóìåíò).

Ïðèìåðû ïðàâèëüíîãî îáúÿâëåíèÿ ìàññèâîâ:

Dim Array_Str (1 To 10) As String - îäíîìåðíûé ñòàòè÷åñêèé ñòðîêîâûé ìàññèâ, âêëþ÷àþùèé 10 ýëåìåíòîâ;
Dim Array_Var() - äèíàìè÷åñêèé ìàññèâ;
Dim Array_Mult (0 To 5, 0 To 7) As Integer - äâóìåðíûé ñòàòè÷åñêèé ìàññèâ öåëûõ ÷èñåë, âêëþ÷àþùèé 6*8=48 ýëåìåíòîâ.


Ïðè îáúÿâëåíèè ìàññèâîâ ñëåäóåò ïîìíèòü, ÷òî âêëþ÷åíèå îïåðàòîðà Subscripts â îáúÿâëåíèè ìàññèâà ñîçäàåò ñòàòè÷åñêèé ìàññèâ ñ ôèêñèðîâàííûì ÷èñëîì ýëåìåíòîâ, ïðîïóñê îïåðàòîðà Subscripts â îáúÿâëåíèè ìàññèâà ñîçäàåò äèíàìè÷åñêèé ìàññèâ, à óñòàíîâêà äèðåêòèâû êîìïèëÿòîðà Option Base âëèÿåò íà îáùåå ÷èñëî ýëåìåíòîâ â ìàññèâå.

Èñïîëüçîâàíèå ìàññèâîâ

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

Íèæåïðèâåäåííûé ëèñòèíã ïîêàçûâàåò ýëåìåíòàðíîå îáúÿâëåíèå è èñïîëüçîâàíèå ìàññèâà (â êà÷åñòâå ýëåìåíòîâ ìàññèâà èñïîëüçóåòñÿ ôàêòîðèàë íîìåðà ýëåìåíòà ìàññèâà):



Ïðè ïîìîùè âëîæåííûõ öèêëîâ äîâîëüíî ëåãêî ìîæíî îðãàíèçîâàòü èíèöèàëèçàöèþ äâóìåðíîãî ìàññèâà:



Èçìåíåíèå ðàçìåðíîñòè äèíàìè÷åñêîãî ìàññèâà

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

Ñèíòàêñèñ ReDim:


ReDim [Preserve] varname(subscripts) [As Type] [, varname(subscripts) [As Type]]

varname - èìÿ ñóùåñòâóþùåãî ìàññèâà;
subscripts - ðàçìåðíîñòü ñóùåñòâóþùåãî ìàññèâà;
Type - ëþáîé òèï VBA. Íåîáõîäèìî èñïîëüçîâàòü îòäåëüíûé îïåðàòîð As Type äëÿ êàæäîãî ìàññèâà, êîòîðûé îïðåäåëÿåòñÿ;
Preserve - íåîáÿçàòåëüíûé àðãóìåíò. Åãî èñïîëüçîâàíèå ïðèâîäèò ê òîìó, ÷òî äàííûå óæå èìåþùèåñÿ â ìàññèâå, ñîõðàíÿþòñÿ ïîñëå èçìåíåíèÿ åãî ðàçìåðíîñòè.


Ïðèìåðû ïðàâèëüíîãî èñïîëüçîâàíèÿ îïåðàòîðà ReDim:

Dim Array_Month() As String - îäíîìåðíûé ñòðîêîâûé äèíàìè÷åñêèé ìàññèâ
ReDim Array_Month(29) - óñòàíàâëèâåò ðàçìåðíîñòü äèíàìè÷åñêîãî ìàññèâà ðàâíóþ 29 ýëåìåíòàì
ReDim Array_Month(1 To 30) - èçìåíÿåò ðàçìåð ìàññèâà äî 30 ýëåìåíòà
ReDim Preserve Array_Month(1 To 31) - èçìåíÿåò ðàçìåð ìàññèâà äî 31 ýëåìåíòà, ñîõðàíÿÿ ñîäåðæèìîå

Dim Array_DBL() As Single - îáúÿâëÿåò äèíàìè÷åñêèé ìàññèâ
ReDim Array_DBL(2, 9) - äåëàåò ìàññèâ äâóìåðíûì
ReDim Array_DBL(3, 7) - èçìåíÿåò ðàçìåð äâóìåðíîãî ìàññèâà
ReDim Preserve Array_DBL(1 To 3, 1 To 5) - èçìåíÿåò ïîñëåäíèé ðàçìåð ìàññèâà, ñîõðàíÿÿ ñîäåðæèìîå


Îáðàòèòå âíèìàíèå! Ìîæíî èçìåíÿòü òîëüêî ïîñëåäíåå èçìåðåíèå ìíîãîìåðíîãî ìàññèâà, êîãäà èñïîëüçóåòñÿ êëþ÷åâîå ñëîâî Preserve.




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



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