ПредишенСледващото

Обявяване на динамични масиви

Тази книга ще ви помогне да овладеете VBA интегрирана среда за разработка и да научат как да програмирате на VBA с използването на обекти, техните свойства, методи и събития. Обсъдени техники за програмиране са илюстрирани с примери, които можете веднага да изпробват на практика. Придобитите знания ще можете да кандидатствате за регулиране и подобряване на популярни приложения на Office, включително Office XP приложения и да създават свои собствени приложения.

Книгата е предназначена за тези, които ще бързо и без усилия да научат как да се програмира за Windows, с помощта на VBA.

Книга: VBA за манекени

Декларирам масива като динамичен в следните случаи.

* Ако не знаете и не можем да знаем размер на масива за изпълнение.

* Ако знаете размер на масива в програмата ще се промени.

* Ако, след като сте приключили с помощта на масива, който искате да освободите всички паметта за други цели (големи масиви може да отнеме много памет, която може да бъде освободен за използване на динамични масиви).

DateDniRozhdeniya Дим () Както Дата

VBA се подготвят да използват набор от елементи от тип дата, всъщност не създават дълго масив.

Един динамичен масив може да съхранява данни, стига да не се създаде масив от реалния, като посочва размера му. За тази цел, операторът ReDim, както в следния едномерен масив:

ReDim dateDniRszhdeny (intChisloDneyRozhdeniya - 1)

Имайте предвид, че размерът на масива създаден от този оператор се предоставя чрез използване на една променлива, ако се предположи, че стойността на тази променлива е вече определен в програмата. Стойността на променливата трябва да бъде намалена на 1 до достигане на броя на елементите в масива според VBA номерирани от 0 масиви, разбира се, ако не са се променили системата за номериране, приета по подразбиране, както е описано в раздел "Номерирането на елементите на масив."

Отчетът за ReDim е да се използват при процедури. Същата масива могат да се предефинират толкова пъти, колкото е необходимо, чрез задаване на броя на напълно нови измерения и размери. Само не забравяйте, че когато се замени обичайния набор от съдържанието му напълно унищожена. Нито пък може да се промени типа на данните възлага на масива, с изключение на това, при определени условия, за да обясни, че изглежда има твърде сложно за мен.

За да се запази на масива при предефиниране на данните, използвайте отчета ReDim с ключовата дума, резерват. Такава последователност на отчети декларира динамичен масив, създаване на него като двумерен масив с даден размер и след това се увеличава размера на масива в второто измерение, без унищожаване на съществуващите данни:

Дим dblGalacticMasses (), като два пъти

ReDim Запазване dblGalacticMasses (от 1 до 30 до 50 1)

ReDim Запазване dblGalacticMasses (от 1 до 30 до 1 100)

В действителност, възможността е много ограничено, резерват - когато се използва тази дума не е позволено да се промени размера на масива и да промените размера на само последното измерване (но все още трябва да ReDim резерват изявление да посочите настройките за други измервания). Възможно е да се направи размер на масива е по-малък, но данните, съхранявани в изтритите елементи ще бъдат загубени завинаги.

За използване на програмата в определена елемент на масива, въведете името на масив, последвано от скоби с определен индекс, в който този елемент. Индексът трябва да определи стойностите на цели числа за всеки един от размерите на масива. Например, експресионни strSayings на (4, 6) са очевидно уникално идентифицира низ данни на ред 4 и колона 6 в двумерен масив от низове.

В рамките на описаната система може да използва масив елементи като обикновени променливи. Можете да направите следното:

* Задаване масив елемент стойност; в този пример, стойността определя на данни триизмерна масив специфичен елемент X тип валути:

curBigDough (5, 8, 19) = 27.99

* Задаване на стойността съхранява в масива, променлива, например:

"Никой няма да забележи вашите различни чорапи."

"Вие ще се срещне със стар приятел в супермаркет."

intUserChoice = InputBox ( "За да знам бъдещето си," _

"Въведете число от 1 до 10")

Между другото, този код може да се подобри значително, като добавите към него обработката на неправилно въвеждане, е възможно, когато потребителят е в отговор на функция искане Поле за въвеждане. На проблемите на проверка на данни, когато влизат в глава 10.

За да разберете колко елемента на масива може да се проведе измерване, използвайте Ubound функция, която е особено полезно, когато се занимават с динамични масиви, тъй като в различни моменти от програмата динамичен масив може да съдържа различен брой елементи. Синтаксис UBound следните функции:

UBound [array_name, измерване]

array_name аргумент очевидно поставя името на масива, в която искате да се прилагат, и аргументът, определя размера на цяло число, който казва на VBA, размери от масив ви интересува. Ако не е посочен на измерването, функция UBound връща размера на първото измерение на масива.

Когато за първи път се създаде масив от неговите елементи не съдържат никаква реална информация. В един момент в програмата, която ще трябва да попълните данни подходящи за масив на празно място. Ако трябва да се постави на голямо количество данни наведнъж, той е най-подходящ за тази вложени За цикли. На следващо място, по една за всеки размер на масива. обикновено избрана временна променлива декларирана в процедура, включваща всички тези цикли за тезгяха цикъл.

Този подход се илюстрира със следната малка програма, в която триизмерна масив е изпълнен с последователни числа, започвайки от 1. Ето и кода:

Строителство Размер Като цяло число = 3

Дим dblMatrix (1 до размер, л до размер, л размер) двойно

Дим I Като цяло число, J Като цяло число, К Като цяло число, X Като цяло число

За I = 1 до размер

За J = 1 до размер

За к = 1 до размер

Двойна Matrixf л, J, K) = X

Редът на инвестиционни цикли ще определи реда на попълване на крайградски масив. На свой ред, последователността, в която са изпълнени елементите на масива, и често зависят от техните стойности.

Обяснете, че само твърде трудни думи, така че аз ще използвам снимките. Позовавайки се отново на пример код. Представлява триизмерна масив в куб, съставен от малки кубчета, което означава, масив.

Илюстрация на тази мисъл експеримент е показан на фиг. 13.2.

Фиг. 13.2. Този чертеж е масив за съхранение на данни; стрели с буквите съответстват на измерванията на масива

Моля, имайте предвид, че основната линия на този код, dblMatrix (I, J, K) = X, променливите I, J и K са съответно на първо, второ и трето измерение на масива. Фиг. 13.2 съм обозначени условно буквите от страните на куб, задайте си размери.

Сега да разгледаме как тези променливи се използват в За цикъл. Напред. Брояч на външния контур и е I, J, а последният sleduyuschego-, вътрешни - К трябва да се разбере, че VBA ще започне изпълнение от вътрешния контур, преминали към него през всички цикли, които го съдържат. Куба на фиг. 13.3 показва две последователни моменти в началото на запълване на масива на този пример.

H, докато вътрешният цикъл се изпълнява, VBA не променя стойностите на променливите I и J. Когато вътрешният цикъл за първи път премина изцяло за първи път ще има възможност да направи крачка следващия цикъл tsikl- J. J- Това ще повиши стойността и отново започва изпълнението на вътрешния цикъл от началото до край. Стойността се променя едва когато контур F се изпълнява три пъти. След увеличаване започва да запълни следващия слой на масива (фиг. 13.4).

Надяваме се, че вече сте разбрали как промяната се отразява по реда на инвестиционни цикли по реда на запълване на масива. Да приемем, че инвестицията на поръчката цикъл се възстановява, а плота на външния контур и в момента е К. Това трябва да изглежда като в този случай съответният код (имайте предвид, че операторът на променлива задача остава на същите места):

Фиг. 13.3. Тези две фигури илюстрират последователността, в която процедурата от пример запълва масив извършването За вътрешна линия. Напред:

За К = 1 до размер

За J = 1 до размер

За I = 1 до размер

dblMatrix (I, U, K) = Х

В резултат на масива ще се появи, както е показано на фиг. 13.5.

Фиг. 13.4. Вторият слой на масива започва да се пълни само след промяна брояч стойност на външния контур, За. до

Фиг. 13.5. Този чертеж илюстрира последователността масив на запълване на модифицирана процедура,

Масивът ще съдържа същите стойности, както в първия случай, но те се съхраняват в други елементи на масива.

В VBA 6, можете да зададете на съдържанието на един масив в друг с просто изявление като

Масив от ляво (този, който се определя стойности), за да бъде динамичен и VBA ще го замени автоматично в съответствие с размера и големината на масива в дясно. Получаване на стойностите на масива трябва също така да се даде възможност за съхраняване на вида, който се определя на оригиналния масив данни.

В VBA 5, което трябва да копирате елемент на масива данни от елемент, подобен на този:

Свързани статии

Подкрепете проекта - споделете линка, благодаря!