Ilova uchun Visual Basic-dagi massivlar

Visual Basic for Application-dagi massivlar odatda bir xil turdagi bog'liq o'zgaruvchilar to'plamini saqlaydigan tuzilmalardir. Massiv yozuvlariga ularning raqamli indeksi orqali kirish mumkin.

Misol uchun, VBA kodida keyinchalik foydalanish uchun ismlari saqlanishi kerak bo'lgan 20 kishidan iborat jamoa mavjud. Har bir nomni ushlab turish uchun 20 ta o'zgaruvchini e'lon qilish mumkin, masalan:

Dim Team_member1 as String Dim Team_member2 as string ... Dim Team_member20 as String

Ammo siz ancha sodda va tartibli usuldan foydalanishingiz mumkin - jamoa a'zolari ismlari ro'yxatini 20 ta o'zgaruvchidan iborat qatorda saqlang. String:

Team_members(1 dan 20 gacha) qator sifatida

Yuqorida ko'rsatilgan qatorda biz massivni e'lon qildik. Endi uning har bir elementiga shunday qiymat yozamiz:

Jamoa_a'zolari(1) = "Jon Smit"

Alohida o'zgaruvchilardan foydalanish bilan solishtirganda massivda ma'lumotlarni saqlashning qo'shimcha afzalligi massivning har bir elementida bir xil amalni bajarish zarurati tug'ilganda namoyon bo'ladi. Agar jamoa a'zolarining ismlari 20 ta alohida o'zgaruvchida saqlangan bo'lsa, ularning har birida bir xil amalni bajarish uchun har safar yozish uchun 20 qator kod kerak bo'ladi. Biroq, agar nomlar massivda saqlangan bo'lsa, unda oddiy tsikl yordamida ularning har biri bilan kerakli amalni bajarishingiz mumkin.

Uning qanday ishlashi quyida har bir jamoa a'zosining ismlarini ustun katakchalarida ketma-ket chop etadigan kod misoli bilan ko'rsatilgan. A faol Excel ish varag'i.

i uchun = 1 dan 20 tagacha katakchalar(i,1).Qiymat = Jamoa_a'zolari(i) Keyingi i

Shubhasiz, 20 ta nomni saqlaydigan massiv bilan ishlash 20 ta alohida oʻzgaruvchidan foydalanishdan koʻra ancha qiyinroq va aniqroqdir. Ammo bu nomlar 20 emas, balki 1000 bo'lsa-chi? Bundan tashqari, familiya va otasining ismini alohida saqlash talab qilinsa?! Tez orada VBA kodidagi ma'lumotlarning bunday hajmini massiv yordamisiz boshqarish mutlaqo imkonsiz bo'lib qolishi aniq.

Excel Visual Basic da ko'p o'lchovli massivlar

Yuqorida muhokama qilingan Visual Basic massivlari bir o'lchovli hisoblanadi. Bu ular oddiy nomlar ro'yxatini saqlashlarini anglatadi. Biroq, massivlar bir nechta o'lchamlarga ega bo'lishi mumkin. Masalan, ikki o'lchovli massivni qiymatlar to'plami bilan solishtirish mumkin.

Aytaylik, siz 5 xil jamoa uchun yanvar oyi uchun kunlik savdo ko'rsatkichlarini saqlamoqchisiz. Buning uchun 5 kun davomida 31 ta oʻlchov toʻplamidan iborat ikki oʻlchovli massiv kerak boʻladi. Keling, shunday massiv e'lon qilaylik:

Yanvar_sotish_raqamlari (1 dan 31 gacha, 1 dan 5 gacha) valyuta sifatida

Massiv elementlariga kirish uchun Yanvar_sotish_ko'rsatkichlari, siz oyning kunini va buyruq raqamini ko'rsatadigan ikkita indeksdan foydalanishingiz kerak. Masalan, savdo ko'rsatkichlarini o'z ichiga olgan element manzili 2-oh uchun jamoalar 15 ming Yanvar quyidagicha yoziladi:

Yanvar_sotish_raqamlari(15, 2)

Xuddi shunday, siz 3 yoki undan ortiq o'lchamli massivni e'lon qilishingiz mumkin - shunchaki massiv deklaratsiyasiga qo'shimcha o'lchamlarni qo'shing va ushbu massivning elementlariga murojaat qilish uchun qo'shimcha indekslardan foydalaning.

Excel Visual Basic da massivlarni e'lon qilish

Ushbu maqolaning boshida biz VBA-da massivlarni e'lon qilishning bir nechta misollarini ko'rib chiqdik, ammo bu mavzu batafsilroq ko'rib chiqishga loyiqdir. Ko'rsatilganidek, bir o'lchovli massivni quyidagicha e'lon qilish mumkin:

Team_members(1 dan 20 gacha) qator sifatida

Bunday deklaratsiya VBA kompilyatoriga massiv ekanligini bildiradi Jamoa_a'zolari 20 dan 1 gacha bo'lgan indekslarda kirish mumkin bo'lgan 20 ta o'zgaruvchidan iborat. Biroq, biz massiv o'zgaruvchilarimizni 0 dan 19 gacha raqamlash haqida o'ylashimiz mumkin, bu holda massiv quyidagicha e'lon qilinishi kerak:

Team_members(0 dan 19 gacha) qator sifatida

Aslida, sukut bo'yicha, massiv elementlarini raqamlash 0 dan boshlanadi va massiv deklaratsiyasida boshlang'ich indeks umuman ko'rsatilmasligi mumkin, masalan:

Dim Team_members(19) as String

VBA kompilyatori bunday yozuvni 20 dan 0 gacha indeksli 19 ta elementdan iborat massivni e'lon qilish kabi ko'rib chiqadi.

Xuddi shu qoidalar ko'p o'lchovli Visual Basic massivlarini e'lon qilishda qo'llaniladi. Misollardan birida ko'rsatilganidek, ikki o'lchovli massivni e'lon qilishda uning o'lchamlari indekslari vergul bilan ajratiladi:

Yanvar_sotish_raqamlari (1 dan 31 gacha, 1 dan 5 gacha) valyuta sifatida

Biroq, agar siz massivning ikkala o'lchami uchun boshlang'ich indeksni belgilamasangiz va uni quyidagicha e'lon qilsangiz:

Dim Jan_Sotish_Raqamlari(31, 5) Valyuta sifatida

u holda bu yozuv ikki o'lchovli massiv sifatida ko'rib chiqiladi, uning birinchi o'lchami indekslari 32 dan 0 gacha bo'lgan 31 ta elementni, massivning ikkinchi o'lchami esa 6 dan 0 gacha indeksli 5 ta elementni o'z ichiga oladi.

Dinamik massivlar

Yuqoridagi misollardagi barcha massivlar qat'iy belgilangan o'lchamlarga ega. Biroq, ko'p hollarda biz massivimiz qanday hajmda bo'lishi kerakligini oldindan bilmaymiz. Biz katta massivni e'lon qilish orqali vaziyatdan chiqishimiz mumkin, uning hajmi bizning vazifamiz uchun zarur bo'lganidan kattaroqdir. Ammo bunday yechim juda ko'p qo'shimcha xotira talab qiladi va dasturni sekinlashtirishi mumkin. Yaxshiroq yechim bor. Biz dinamik massivdan foydalanishimiz mumkin - bu massiv bo'lib, uning o'lchami makrosning bajarilishi davomida istalgan sonda o'rnatilishi va o'zgartirilishi mumkin.

Dinamik massiv bo'sh qavslar bilan e'lon qilinadi, masalan:

Team_members() ni String sifatida xiralashtiring

Keyinchalik, ifoda yordamida kodni bajarish paytida massivning o'lchamini e'lon qilishingiz kerak bo'ladi ReDim:

ReDim jamoasi_a'zolari(1 dan 20 gacha)

Va agar kodni bajarish paytida siz yana massiv hajmini o'zgartirishingiz kerak bo'lsa, siz yana ReDim ifodasidan foydalanishingiz mumkin:

Agar jamoa_o'lchami > 20 bo'lsa, u holda jamoa_a'zolarini qayta o'chiring (1dan jamoa_o'lchamiga) tugaydi, agar

Shuni yodda tutingki, dinamik massivning o'lchamini shu tarzda o'zgartirish massivda saqlangan barcha qiymatlarning yo'qolishiga olib keladi. Ma'lumotni massivda saqlash uchun siz kalit so'zdan foydalanishingiz kerak Saqlashquyida ko'rsatilgandek:

Agar jamoa_oʻlchami > 20 boʻlsa, u holda jamoa_aʼzolarini (1dan jamoa_oʻlchamiga) saqlang.

Afsuski, kalit so'z Saqlash faqat massiv o'lchamining yuqori chegarasini o'zgartirish uchun ishlatilishi mumkin. Massivning pastki chegarasini bu tarzda o'zgartirib bo'lmaydi. Bundan tashqari, agar massiv bir nechta o'lchamlarga ega bo'lsa, kalit so'zdan foydalaning Saqlash, faqat massivning oxirgi o'lchamini o'zgartirish mumkin.

Leave a Reply