Tətbiq üçün Visual Basic-də massivlər

Tətbiq üçün Visual Basic-də massivlər adətən eyni tipli əlaqəli dəyişənlər dəstlərini saxlayan strukturlardır. Massiv girişlərinə onların ədədi indeksi ilə daxil olur.

Məsələn, VBA kodunda daha sonra istifadə etmək üçün adlarının saxlanması lazım olan 20 nəfərlik bir komanda var. Sadəcə olaraq hər adı saxlamaq üçün 20 dəyişən elan etmək olar, məsələn:

Dim Team_Uzv1 Sim kimi Dim Komanda_Üzvü2 Sim kimi ... Dim Komanda_Üzvü20 Sətir kimi

Lakin siz daha sadə və daha mütəşəkkil bir üsuldan istifadə edə bilərsiniz – komanda üzvlərinin adlarının siyahısını 20 dəyişənlik massivdə saxlayın. Sim:

Komanda_Üzvlərini (1-dən 20-yə) Sətir kimi azaldın

Yuxarıda göstərilən sətirdə bir massiv elan etdik. İndi onun hər bir elementinə belə bir dəyər yazaq:

Komanda_Üzvləri(1) = "John Smith"

Ayrı-ayrı dəyişənlərin istifadəsi ilə müqayisədə məlumatların massivdə saxlanmasının əlavə üstünlüyü, massivin hər bir elementi üzərində eyni hərəkəti yerinə yetirmək zərurəti yarandıqda aydın olur. Əgər komanda üzvlərinin adları 20 ayrı dəyişəndə ​​saxlanılsaydı, o zaman onların hər birində eyni hərəkəti yerinə yetirmək üçün hər dəfə yazmaq üçün 20 sətir kod lazım olardı. Lakin, adlar massivdə saxlanılırsa, o zaman sadə bir döngədən istifadə edərək onların hər biri ilə istədiyiniz hərəkəti edə bilərsiniz.

Bunun necə işlədiyi aşağıda hər bir komanda üzvünün adlarını sütun xanalarında ardıcıl olaraq çap edən kod nümunəsi ilə nümayiş etdirilir. A aktiv Excel iş vərəqi.

i = 1 - 20 Hüceyrə(i,1) üçün. Dəyər = Komanda_Üzvləri(i) Sonrakı i

Aydındır ki, 20 adı saxlayan massivlə işləmək 20 ayrı dəyişəndən istifadə etməkdən daha az çətin və dəqiqdir. Bəs bu adlar 20 yox, 1000-dirsə? Bəs əlavə olaraq soyad və ata adının ayrıca saxlanılması tələb olunursa?! Aydındır ki, massivin köməyi olmadan VBA kodunda belə həcmli məlumatı idarə etmək tezliklə tamamilə qeyri-mümkün olacaq.

Excel Visual Basic-də çoxölçülü massivlər

Yuxarıda müzakirə edilən Visual Basic massivləri birölçülü hesab olunur. Bu o deməkdir ki, onlar adların sadə siyahısını saxlayırlar. Bununla belə, massivlər bir neçə ölçüyə malik ola bilər. Məsələn, iki ölçülü massiv qiymətlər şəbəkəsi ilə müqayisə oluna bilər.

Tutaq ki, siz 5 fərqli komanda üçün yanvar ayı üçün gündəlik satış rəqəmlərini saxlamaq istəyirsiniz. Bunun üçün 5 gün ərzində 31 metrik dəstdən ibarət iki ölçülü massiv tələb olunacaq. Belə bir massiv elan edək:

Yanvar_Satış_Rəqəmləri (1 - 31, 1 - 5) Valyuta kimi

Massiv elementlərinə daxil olmaq üçün Yanvar_Satış Rəqəmləri, ayın gününü və əmr nömrəsini göstərən iki indeksdən istifadə etməlisiniz. Məsələn, satış rəqəmlərini ehtiva edən elementin ünvanı 2-oh üçün komandalar 15-ci Yanvar belə yazılmalıdır:

Yanvar_Satış_Rəqəmləri(15, 2)

Eyni şəkildə, siz 3 və ya daha çox ölçüsü olan massiv elan edə bilərsiniz – sadəcə massiv bəyannaməsinə əlavə ölçülər əlavə edin və bu massivin elementlərinə istinad etmək üçün əlavə indekslərdən istifadə edin.

Excel Visual Basic proqramında massivlərin elan edilməsi

Bu məqalənin əvvəlində biz VBA-da massivlərin elan edilməsinin bir neçə nümunəsinə baxdıq, lakin bu mövzu daha yaxından baxmağa layiqdir. Şəkildə göstərildiyi kimi, bir ölçülü massiv belə elan edilə bilər:

Komanda_Üzvlərini (1-dən 20-yə) Sətir kimi azaldın

Belə bir bəyannamə VBA tərtibçisinə serialın olduğunu bildirir Komanda üzvləri 20-dən 1-yə qədər indekslərdə əldə edilə bilən 20 dəyişəndən ibarətdir. Bununla belə, massiv dəyişənlərimizi 0-dan 19-a qədər nömrələməyi düşünə bilərik, bu halda massiv belə elan edilməlidir:

Komanda_Üzvlərini (0-dən 19-yə) Sətir kimi azaldın

Əslində, standart olaraq, massiv elementlərinin nömrələnməsi 0-dan başlayır və massiv elanında ilkin indeks ümumiyyətlə göstərilməyə bilər, məsələn:

Dim Komanda_Üzvləri(19) String kimi

VBA tərtibçisi belə bir girişi 20-dan 0-a qədər indeksləri olan 19 elementdən ibarət massiv elan etmək kimi nəzərdən keçirəcəkdir.

Çoxölçülü Visual Basic massivlərini elan edərkən eyni qaydalar tətbiq olunur. Nümunələrdən birində artıq göstərildiyi kimi, ikiölçülü massiv elan edilərkən onun ölçülərinin indeksləri vergüllə ayrılır:

Yanvar_Satış_Rəqəmləri (1 - 31, 1 - 5) Valyuta kimi

Bununla belə, əgər siz serialın hər iki ölçüsü üçün başlanğıc indeksi təyin etməsəniz və onu belə elan etsəniz:

Yanvar_Satış_Rəqəmləri(31, 5) Valyuta kimi

onda bu giriş ikiölçülü massiv kimi qəbul ediləcək, onun birinci ölçüsü 32-dan 0-ə qədər indeksləri olan 31 elementdən, massivin ikinci ölçüsü isə 6-dan 0-ə qədər indeksləri olan 5 elementdən ibarətdir.

Dinamik seriallar

Yuxarıdakı misallardakı bütün massivlərin sabit ölçüləri var. Ancaq bir çox hallarda massivimizin hansı ölçüdə olması lazım olduğunu əvvəlcədən bilmirik. Vəziyyətdən nəhəng bir massiv elan etməklə çıxa bilərik, onun ölçüsü əlbəttə ki, vəzifəmiz üçün lazım olandan daha böyük olacaqdır. Ancaq belə bir həll çoxlu əlavə yaddaş tələb edəcək və proqramı yavaşlata bilər. Daha yaxşı bir həll var. Biz dinamik massivdən istifadə edə bilərik – bu, makronun icrası zamanı ölçüsünü istənilən sayda təyin etmək və dəyişdirmək mümkün olan massivdir.

Dinamik massiv boş mötərizələrlə elan edilir, belə ki:

Komanda_Üzvlərini() sətir kimi azaldın

Sonra, ifadədən istifadə edərək kodun icrası zamanı massivin ölçüsünü elan etməli olacaqsınız ReDim:

ReDim Komandasının_Üzvləri(1 - 20)

Və kodun icrası zamanı massivin ölçüsünü yenidən dəyişdirmək lazımdırsa, yenidən ReDim ifadəsindən istifadə edə bilərsiniz:

Əgər Komanda_Ölçüsü > 20-dirsə, O zaman Komanda_Üzvlərini (1-dən Komanda_Ölçüsünə) ReDim edin

Dinamik massivin bu şəkildə ölçüsünün dəyişdirilməsi massivdə saxlanılan bütün dəyərlərin itirilməsi ilə nəticələnəcəyini unutmayın. Artıq massivdə olan məlumatları saxlamaq üçün açar sözdən istifadə etməlisiniz Qorunaşağıdakı kimi:

Əgər Komanda_Ölçüsü > 20-dirsə, O zaman Komanda_Üzvlərini (1-dən Komanda_Ölçüsünə) ReDim qoruyun.

Təəssüf ki, açar söz Qorun yalnız massiv ölçüsünün yuxarı sərhəddini dəyişdirmək üçün istifadə edilə bilər. Massivin aşağı sərhədi bu şəkildə dəyişdirilə bilməz. Həmçinin, əgər massiv bir neçə ölçüyə malikdirsə, o zaman açar sözdən istifadə edin Qorun, yalnız massivin son ölçüsünün ölçüsü dəyişdirilə bilər.

Cavab yaz