Visual Basic програмын массивууд

Visual Basic програмын массивууд нь ихэвчлэн ижил төрлийн холбоотой хувьсагчдын багцыг хадгалдаг бүтэц юм. Массивын оруулгууд нь тоон индексээр нь ханддаг.

Жишээлбэл, дараа нь VBA кодонд ашиглахын тулд нэрийг нь хадгалах шаардлагатай 20 хүний ​​бүрэлдэхүүнтэй баг байдаг. Нэр бүрийг хадгалахын тулд 20 хувьсагчийг тунхаглаж болно, жишээ нь:

Dim Team_member1 As String Dim Team_member2 As String ... Dim Team_member20 as String

Гэхдээ та илүү энгийн бөгөөд илүү зохион байгуулалттай аргыг ашиглаж болно - багийн гишүүдийн нэрсийн жагсаалтыг 20 хувьсагчаас бүрдэх массив болгон хадгална уу. String:

Бүдэг багийн гишүүд(1-ээс 20 хүртэл) мөр болгон

Дээр үзүүлсэн мөрөнд бид массив зарласан. Одоо түүний элемент тус бүрд дараах утгыг бичье.

Багийн гишүүд(1) = "Жон Смит"

Тусдаа хувьсагч ашиглахтай харьцуулахад массив дахь өгөгдлийг хадгалах нэмэлт давуу тал нь массивын элемент бүр дээр ижил үйлдэл хийх шаардлагатай болсон үед тодорхой болно. Хэрэв багийн гишүүдийн нэрийг 20 тусдаа хувьсагчид хадгалсан бол тус бүр дээр ижил үйлдлийг гүйцэтгэхийн тулд 20 мөр код бичих шаардлагатай болно. Гэсэн хэдий ч, хэрэв нэрс нь массив дотор хадгалагдсан бол та энгийн давталт ашиглан хүссэн үйлдлийг хийж болно.

Энэ нь хэрхэн ажилладагийг доор харуулсан кодын жишээн дээр багийн гишүүн бүрийн нэрийг баганын нүднүүдэд дараалан хэвлэдэг. A идэвхтэй Excel ажлын хуудас.

For i = 1-ээс 20 нүд (i,1).Утга = Багийн_Гишүүд(i) Дараагийн i

Мэдээжийн хэрэг, 20 нэр хадгалдаг массивтай ажиллах нь 20 тусдаа хувьсагч ашиглахаас хамаагүй бага төвөгтэй бөгөөд илүү нарийвчлалтай байдаг. Гэхдээ эдгээр нэрс 20 биш, 1000 байвал яах вэ? Үүнээс гадна овог, овог нэрийг тусад нь байлгах шаардлагатай бол?! Удахгүй VBA кодын ийм хэмжээний өгөгдлийг массивын тусламжгүйгээр зохицуулах боломжгүй болох нь тодорхой байна.

Excel Visual Basic дахь олон хэмжээст массив

Дээр дурдсан Visual Basic массивуудыг нэг хэмжээст гэж үздэг. Энэ нь тэд нэрсийн энгийн жагсаалтыг хадгалдаг гэсэн үг юм. Гэсэн хэдий ч массив нь олон хэмжээстэй байж болно. Жишээлбэл, хоёр хэмжээст массивыг утгуудын сүлжээтэй харьцуулж болно.

Та 5 өөр багийн 5-р сарын өдөр тутмын борлуулалтын тоог хадгалахыг хүсч байна гэж бодъё. Үүнд 31 хоногийн турш XNUMX багц хэмжүүрээс бүрдэх хоёр хэмжээст массив шаардлагатай болно. Ийм массивыг зарлацгаая:

Нэгдүгээр сарын борлуулалтын_тоо (1-ээс 31, 1-ээс 5 хүртэл) мөнгөн тэмдэгтээр

Массивын элементүүдэд хандахын тулд Нэгдүгээр сарын_борлуулалтын_тоо, та сарын өдөр болон тушаалын дугаарыг харуулсан хоёр индекс ашиглах хэрэгтэй. Жишээ нь, борлуулалтын тоог агуулсан элементийн хаяг 2-өө төлөө багууд 15 мянга Нэгдүгээр сарыг ингэж бичнэ.

15-р сарын борлуулалтын_тоо(2, XNUMX)

Үүнтэй адилаар та 3 ба түүнээс дээш хэмжээс бүхий массивыг зарлаж болно - массивын мэдэгдэлд нэмэлт хэмжээс нэмж, энэ массивын элементүүдэд хандахын тулд нэмэлт индекс ашиглахад хангалттай.

Excel Visual Basic дээр массивыг зарлах

Энэ нийтлэлийн эхэнд бид VBA дээр массив зарлах хэд хэдэн жишээг аль хэдийн авч үзсэн боловч энэ сэдвийг илүү нарийвчлан авч үзэх хэрэгтэй. Зурагт үзүүлснээр нэг хэмжээст массивыг дараах байдлаар зарлаж болно.

Бүдэг багийн гишүүд(1-ээс 20 хүртэл) мөр болгон

Ийм мэдэгдэл нь VBA хөрвүүлэгчид массив гэж хэлдэг Багийн гишүүд Энэ нь 20-ээс 1 хүртэлх индексээр хандах боломжтой 20 хувьсагчаас бүрдэнэ. Гэхдээ бид массив хувьсагчдаа 0-ээс 19 хүртэл дугаарлах талаар бодож болох бөгөөд энэ тохиолдолд массивыг дараах байдлаар зарлах ёстой:

Бүдэг багийн гишүүд(0-ээс 19 хүртэл) мөр болгон

Үнэн хэрэгтээ, анхдагчаар массивын элементүүдийн дугаарлалт 0-ээс эхэлдэг бөгөөд массивын мэдэгдэлд эхний индексийг огт заагаагүй байж болно, жишээ нь:

Бүдэг багийн гишүүд(19) String байдлаар

VBA хөрвүүлэгч нь 20-ээс 0 хүртэлх индекс бүхий 19 элементийн массивыг зарлахтай адил бичилтийг авч үзэх болно.

Олон хэмжээст Visual Basic массивыг зарлахдаа ижил дүрмийг баримтална. Жишээнүүдийн аль нэгэнд үзүүлсэнчлэн хоёр хэмжээст массивыг зарлахдаа түүний хэмжээсийн индексийг таслалаар тусгаарлана.

Нэгдүгээр сарын борлуулалтын_тоо (1-ээс 31, 1-ээс 5 хүртэл) мөнгөн тэмдэгтээр

Гэсэн хэдий ч, хэрэв та массивын хоёр хэмжээсийн эхлэлийн индексийг зааж өгөөгүй бөгөөд үүнийг дараах байдлаар зарлана уу:

Бүдэг 31-р сарын борлуулалтын_тоо(5, XNUMX) Валютын хэлбэрээр

дараа нь энэ оруулгыг хоёр хэмжээст массив гэж үзэх бөгөөд эхний хэмжээс нь 32-ээс 0 хүртэлх индекстэй 31 элемент, массивын хоёр дахь хэмжээс нь 6-ээс 0 хүртэлх индекстэй 5 элементийг агуулна.

Динамик массивууд

Дээрх жишээн дэх бүх массив нь тогтмол тооны хэмжээстэй байна. Гэсэн хэдий ч ихэнх тохиолдолд бид массив ямар хэмжээтэй байх ёстойг урьдчилан мэддэггүй. Асар том массивыг зарласнаар бид нөхцөл байдлаас гарч чадна, түүний хэмжээ нь бидний даалгаварт шаардлагатай хэмжээнээс их байх болно. Гэхдээ ийм шийдэл нь маш их нэмэлт санах ой шаардагдах бөгөөд програмыг удаашруулж болно. Илүү сайн шийдэл байна. Бид динамик массивыг ашиглаж болно - энэ нь макро ажиллуулах явцад хэмжээг нь хэдэн ч удаа тохируулах, өөрчлөх боломжтой массив юм.

Динамик массивыг дараах байдлаар хоосон хаалтанд зарлана.

Team_members()-ийг мөр болгон бүдгэрүүлнэ

Дараа нь та илэрхийллийг ашиглан кодыг гүйцэтгэх явцад массивын хэмжээг зарлах шаардлагатай болно ReDim:

ReDim багийн гишүүд(1-ээс 20 хүртэл)

Хэрэв кодыг гүйцэтгэх явцад массивын хэмжээг дахин өөрчлөх шаардлагатай бол ReDim илэрхийллийг дахин ашиглаж болно.

Хэрэв багийн_хэмжээ > 20 бол ReDim багийн гишүүд (1-ээс багийн_хэмжээ хүртэл) дуусна.

Ийм маягаар динамик массивын хэмжээг өөрчлөх нь массив дахь бүх утгыг алдахад хүргэдэг гэдгийг санаарай. Массив дотор байгаа өгөгдлийг хадгалахын тулд та түлхүүр үгийг ашиглах хэрэгтэй Хамгаалахдараах байдлаар харуулав.

Хэрэв багийн_хэмжээ > 20 бол ReDim-г хадгалах багийн гишүүд (1-ээс багийн_хэмжээ) дуусна.

Харамсалтай нь түлхүүр үг Хамгаалах нь зөвхөн массив хэмжээсийн дээд хязгаарыг өөрчлөхөд ашиглагдаж болно. Массивын доод хязгаарыг ийм байдлаар өөрчлөх боломжгүй. Мөн хэрэв массив олон хэмжээстэй бол түлхүүр үгийг ашиглана уу Хамгаалах, зөвхөн массивын сүүлчийн хэмжээсийн хэмжээг өөрчлөх боломжтой.

хариу үлдээх