Զանգվածներ Visual Basic-ում կիրառման համար

Visual Basic-ի համար նախատեսված զանգվածները կառուցվածքներ են, որոնք սովորաբար պահպանում են նույն տեսակի հարակից փոփոխականների հավաքածուները: Զանգվածի մուտքերը հասանելի են իրենց թվային ինդեքսով:

Օրինակ, կա 20 հոգուց բաղկացած թիմ, որոնց անունները պետք է պահպանվեն՝ հետագայում VBA կոդում օգտագործելու համար: Կարելի է պարզապես հայտարարել 20 փոփոխական՝ յուրաքանչյուր անուն պահելու համար, այսպես.

Dim Team_Member1 As String Dim Team_Member2 As String ... Dim Team_Member20 As String

Բայց դուք կարող եք օգտագործել շատ ավելի պարզ և կազմակերպված եղանակ՝ պահպանել թիմի անդամների անունների ցանկը 20 փոփոխականների զանգվածում, ինչպիսիք են. String:

Dim Team_Members(1-ից 20) As String

Վերևում ցուցադրված տողում մենք հայտարարագրել ենք զանգված: Այժմ եկեք գրենք արժեք նրա յուրաքանչյուր տարրի համար, այսպես.

Team_Members(1) = «Ջոն Սմիթ»

Զանգվածում տվյալների պահպանման լրացուցիչ առավելությունը, համեմատած առանձին փոփոխականների օգտագործման հետ, ակնհայտ է դառնում, երբ անհրաժեշտ է դառնում կատարել նույն գործողությունը զանգվածի յուրաքանչյուր տարրի վրա: Եթե ​​թիմի անդամների անունները պահվեին 20 առանձին փոփոխականներում, ապա ամեն անգամ կպահանջվեր 20 տող կոդ՝ նրանցից յուրաքանչյուրի վրա նույն գործողությունը կատարելու համար։ Այնուամենայնիվ, եթե անունները պահվում են զանգվածում, ապա դուք կարող եք կատարել ցանկալի գործողությունը նրանցից յուրաքանչյուրի հետ՝ օգտագործելով պարզ օղակ:

Ինչպես է այն աշխատում, ստորև ներկայացված է կոդի օրինակով, որը հաջորդաբար տպում է թիմի յուրաքանչյուր անդամի անունները սյունակի բջիջներում: A ակտիվ Excel աշխատաթերթ:

i = 1-ից 20 բջիջների համար (i,1): Արժեք = Թիմի_անդամներ (i) Հաջորդ i

Ակնհայտ է, որ 20 անուն պահող զանգվածի հետ աշխատելը շատ ավելի քիչ դժվար է և ավելի ճշգրիտ, քան 20 առանձին փոփոխականներ օգտագործելը: Բայց եթե այս անունները ոչ թե 20, այլ 1000 լինեն: Իսկ եթե, ի լրումն, պահանջվում է ազգանուններն ու հայրանուններն առանձին պահել?! Հասկանալի է, որ շուտով բոլորովին անհնար է դառնալու VBA կոդում նման ծավալի տվյալներ վարել առանց զանգվածի օգնության։

Բազմաչափ զանգվածներ Excel Visual Basic-ում

Վերևում քննարկված Visual Basic զանգվածները համարվում են միաչափ: Սա նշանակում է, որ նրանք պահպանում են անունների պարզ ցուցակ: Այնուամենայնիվ, զանգվածները կարող են ունենալ բազմաթիվ չափեր: Օրինակ, երկչափ զանգվածը կարելի է համեմատել արժեքների ցանցի հետ։

Ենթադրենք, դուք ցանկանում եք պահպանել հունվարի վաճառքի օրական ցուցանիշները 5 տարբեր թիմերի համար: Սա կպահանջի երկչափ զանգված, որը բաղկացած է չափումների 5 հավաքածուից 31 օրվա համար: Եկեք հայտարարենք այսպիսի զանգված.

Dim Jan_Sales_Figures (1-ից 31, 1-ից 5) որպես արժույթ

Զանգվածի տարրեր մուտք գործելու համար Jan_Sales_Figures, անհրաժեշտ է օգտագործել երկու ինդեքս՝ նշելով ամսվա օրը և հրամանի համարը։ Օրինակ՝ վաճառքի թվեր պարունակող տարրի հասցեն 2-օ թիմերի համար 15 թ հունվարը կգրվեր այսպես.

Jan_Sales_Figures(15, 2)

Նույն կերպ, դուք կարող եք հայտարարել 3 կամ ավելի չափսերով զանգված. պարզապես ավելացրեք զանգվածի հայտարարագրին լրացուցիչ չափումներ և օգտագործեք լրացուցիչ ինդեքսներ այս զանգվածի տարրերին անդրադառնալու համար:

Զանգվածների հայտարարում Excel Visual Basic-ում

Ավելի վաղ այս հոդվածում մենք արդեն նայեցինք VBA-ում զանգվածների հայտարարագրման մի քանի օրինակներ, բայց այս թեման արժանի է ավելի մանրամասն դիտարկման: Ինչպես ցույց է տրված, միաչափ զանգվածը կարող է հայտարարվել այսպես.

Dim Team_Members(1-ից 20) As String

Նման հայտարարագիրը VBA կոմպիլյատորին ասում է, որ զանգվածը Թիմի_անդամներ բաղկացած է 20 փոփոխականներից, որոնց կարելի է մուտք գործել 1-ից 20 ինդեքսներով: Այնուամենայնիվ, մենք կարող ենք մտածել մեր զանգվածի փոփոխականները համարակալելու մասին 0-ից մինչև 19, որի դեպքում զանգվածը պետք է հայտարարվի այսպես.

Dim Team_Members(0-ից 19) As String

Փաստորեն, ըստ լռելյայն, զանգվածի տարրերի համարակալումը սկսվում է 0-ից, իսկ զանգվածի հայտարարագրում սկզբնական ինդեքսը կարող է ընդհանրապես չնշվել, այսպես.

Dim Team_Members(19) As String

VBA կոմպիլյատորը նման գրառումը կվերաբերի որպես 20-ից 0 ինդեքսներով 19 տարրերից բաղկացած զանգված:

Նույն կանոնները կիրառվում են Visual Basic բազմաչափ զանգվածներ հայտարարելիս։ Ինչպես արդեն ցույց է տրվել օրինակներից մեկում, երկչափ զանգվածը հայտարարելիս դրա չափերի ցուցիչները բաժանվում են ստորակետով.

Dim Jan_Sales_Figures (1-ից 31, 1-ից 5) որպես արժույթ

Այնուամենայնիվ, եթե զանգվածի երկու չափսերի համար մեկնարկային ինդեքս չնշեք և այն հայտարարեք այսպես.

Dim Jan_Sales_Figures(31, 5) Որպես արժույթ

ապա այս գրառումը կդիտարկվի որպես երկչափ զանգված, որի առաջին չափումը պարունակում է 32 տարր՝ 0-ից 31-ի ինդեքսներով, իսկ զանգվածի երկրորդ չափումը պարունակում է 6 տարր՝ 0-ից 5-ի ինդեքսներով:

Դինամիկ զանգվածներ

Վերոնշյալ օրինակների բոլոր զանգվածներն ունեն չափերի ֆիքսված քանակ: Այնուամենայնիվ, շատ դեպքերում մենք նախապես չգիտենք, թե ինչ չափի պետք է լինի մեր զանգվածը։ Մենք կարող ենք իրավիճակից դուրս գալ՝ հայտարարելով հսկայական զանգված, որի չափերը, անշուշտ, ավելի մեծ կլինեն, քան անհրաժեշտ է մեր առաջադրանքի համար։ Բայց նման լուծումը կպահանջի շատ լրացուցիչ հիշողություն և կարող է դանդաղեցնել ծրագիրը: Ավելի լավ լուծում կա. Մենք կարող ենք օգտագործել դինամիկ զանգված. սա զանգված է, որի չափը կարող է սահմանվել և փոփոխվել մակրոյի կատարման ընթացքում ցանկացած անգամ:

Դինամիկ զանգվածը հայտարարվում է դատարկ փակագծերով, այսպես.

Dim Team_Members() As String

Հաջորդը, դուք պետք է հայտարարեք զանգվածի չափը կոդի կատարման ժամանակ՝ օգտագործելով արտահայտությունը ReDim:

ReDim Team_Members (1-ից 20)

Իսկ եթե կոդի կատարման ժամանակ անհրաժեշտ է կրկին փոխել զանգվածի չափը, ապա կարող եք կրկին օգտագործել ReDim արտահայտությունը.

Եթե ​​Team_Size > 20, ապա ReDim Team_Members (1 To Team_Size) Ավարտ, եթե

Հիշեք, որ այս կերպ դինամիկ զանգվածի չափափոխումը կհանգեցնի զանգվածում պահվող բոլոր արժեքների կորստի: Արդեն զանգվածում տվյալներ պահելու համար հարկավոր է օգտագործել հիմնաբառը Պահպանումինչպես ցույց է տրված ներքեւում:

Եթե ​​Team_Size > 20, ապա ReDim Reserve Team_Members(1 To Team_Size) Ավարտ, եթե

Ցավոք, բանալի բառը Պահպանում կարող է օգտագործվել միայն զանգվածի չափման վերին սահմանը փոխելու համար: Զանգվածի ստորին սահմանը չի կարող փոփոխվել այս կերպ: Բացի այդ, եթե զանգվածն ունի բազմաթիվ չափեր, ապա օգտագործելով հիմնաբառը Պահպանում, հնարավոր է չափափոխել միայն զանգվածի վերջին չափը։

Թողնել գրառում