Қолданбаға арналған Visual Basic жүйесіндегі массивтер

Visual Basic for Application бағдарламасындағы массивтер әдетте бір түрдегі қатысты айнымалылар жиынын сақтайтын құрылымдар болып табылады. Массив жазбаларына олардың сандық индексі арқылы қол жеткізіледі.

Мысалы, VBA кодында кейінірек пайдалану үшін аттары сақталуы қажет 20 адамнан тұратын топ бар. Әрбір атауды сақтау үшін жай ғана 20 айнымалыны жариялауға болады, мысалы:

Dim Team_Member1 As String Dim Team_member2 As String ... Dim Team_member20 As String

Бірақ сіз әлдеқайда қарапайым және ұйымдасқан әдісті пайдалана аласыз - топ мүшелерінің атауларының тізімін 20 айнымалы массивте сақтаңыз. String:

Топ_мүшелерін (1-ден 20-ға дейін) Жол ретінде азайту

Жоғарыда көрсетілген жолда біз массив жарияладық. Енді оның әрбір элементіне келесідей мән жазайық:

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 метрика жиынынан тұратын екі өлшемді массив қажет болады. Мынадай массив жариялайық:

Көңілді қаңтар_сату_көрсеткіштері(1 - 31, 1 - 5) валюта ретінде

Жиым элементтеріне қол жеткізу үшін Қаңтар_сату_көрсеткіштері, айдың күні мен пәрмен нөмірін көрсететін екі индексті пайдалану керек. Мысалы, сату сандарын қамтитын элементтің мекенжайы 2-о үшін командалар 15 мың Қаңтар былай жазылады:

Қаңтар_сату_сандары(15, 2)

Дәл осылай сіз 3 немесе одан да көп өлшемдері бар массивті жариялай аласыз – жай ғана массив декларациясына қосымша өлшемдерді қосыңыз және осы массивтің элементтеріне сілтеме жасау үшін қосымша индекстерді пайдаланыңыз.

Excel Visual Basic бағдарламасында массивтерді жариялау

Осы мақаланың басында біз VBA-да массивтерді жариялаудың бірнеше мысалдарын қарастырдық, бірақ бұл тақырып мұқият қарауға лайық. Көрсетілгендей, бір өлшемді массив келесідей жариялануы мүмкін:

Топ_мүшелерін (1-ден 20-ға дейін) Жол ретінде азайту

Мұндай мәлімдеме VBA компиляторына массив екенін айтады Топ_мүшелері 20-ден 1-ға дейінгі индекстерде қол жеткізуге болатын 20 айнымалыдан тұрады. Дегенмен, массивтің айнымалы мәндерін 0-ден 19-ға дейін нөмірлеуді ойлауымыз мүмкін, бұл жағдайда массив келесідей жариялануы керек:

Топ_мүшелерін (0-ден 19-ға дейін) Жол ретінде азайту

Шын мәнінде, әдепкі бойынша массив элементтерінің нөмірленуі 0-ден басталады және массив декларациясында бастапқы индекс мүлде көрсетілмеуі мүмкін, мысалы:

Команда_мүшелері(19) Жол ретінде

VBA компиляторы 20-ден 0-ға дейінгі индекстері бар 19 элементтің массивін жариялау сияқты жазбаны қарастырады.

Көп өлшемді Visual Basic массивтерін жариялағанда бірдей ережелер қолданылады. Мысалдардың бірінде көрсетілгендей, екі өлшемді массивті жариялау кезінде оның өлшемдерінің индекстері үтірмен бөлінеді:

Көңілді қаңтар_сату_көрсеткіштері(1 - 31, 1 - 5) валюта ретінде

Дегенмен, массивтің екі өлшемі үшін де бастапқы индексті көрсетпесеңіз және оны келесідей жариялаңыз:

Dim Jan_Sales_Figures(31, 5) Валюта ретінде

онда бұл жазба екі өлшемді массив ретінде қарастырылады, оның бірінші өлшемі 32-ден 0-ге дейінгі индекстері бар 31 элементті, ал массивтің екінші өлшемі 6-ден 0-ке дейінгі индекстері бар 5 элементті қамтиды.

Динамикалық массивтер

Жоғарыда келтірілген мысалдардағы барлық массивтерде өлшемдердің бекітілген саны бар. Дегенмен, көп жағдайда біз массивіміздің өлшемі қандай болуы керектігін алдын ала білмейміз. Біз үлкен массивті жариялау арқылы жағдайдан шыға аламыз, оның мөлшері біздің міндетіміз үшін қажет болғаннан үлкенірек болады. Бірақ мұндай шешім көп қосымша жадты қажет етеді және бағдарламаны баяулатуы мүмкін. Жақсырақ шешім бар. Біз динамикалық массивті пайдалана аламыз – бұл макросты орындау кезінде өлшемін орнатуға және өзгертуге болатын массив.

Динамикалық массив келесідей бос жақшалармен жарияланады:

Team_members() жол ретінде күңгірттендіріңіз

Әрі қарай, өрнекті пайдаланып кодты орындау кезінде массив өлшемін жариялау қажет болады ReDim:

ReDim командасының_мүшелері(1-ден 20-ға дейін)

Ал егер кодты орындау кезінде массив өлшемін қайтадан өзгерту қажет болса, онда сіз ReDim өрнегін қайтадан пайдалана аласыз:

Команда_өлшемі > 20 болса, команда_мүшелерін өзгерту (1-ден топ_өлшеміне) аяқталады, егер

Динамикалық массивтің өлшемін осылай өзгерту массивте сақталған барлық мәндердің жоғалуына әкелетінін есте сақтаңыз. Жиымдағы деректерді сақтау үшін кілт сөзді пайдалану керек Қорғаныстөменде көрсетілгендей:

Команда_өлшемі > 20 болса, Топ_мүшелерін (1-ден топ_өлшеміне) ReDim сақтаңыз.

Өкінішке орай, кілт сөз Қорғаныс массив өлшемінің жоғарғы шегін өзгерту үшін ғана пайдалануға болады. Массивтің төменгі шегін осылай өзгерту мүмкін емес. Сондай-ақ, егер массивтің бірнеше өлшемдері болса, онда кілт сөзді пайдаланыңыз Қорғаныс, тек массивтің соңғы өлшемін өзгертуге болады.

пікір қалдыру