Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡ„ΠΈΡΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 8

Автор Π˜Ρ€ΠΈΠ½Π° Π€Ρ€ΠΈΠ·Π΅Π½

ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Dim:

Dim ИмяМассива (Ρ€Π°Π·ΠΌΠ΅Ρ€) As Π’ΠΈΠΏΠ”Π°Π½Π½Ρ‹Ρ…

Если вмСсто слова Dim Π½Π°Π±Ρ€Π°Ρ‚ΡŒ слово Public, Π±ΡƒΠ΄Π΅Ρ‚ создан массив, ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ видимости ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ станСт вся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Dim МойМассив(3) As Integer

Π‘ΠΎΠ·Π΄Π°Π½ массив ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ МойМассив, состоящий ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… элСмСнтов ΠΈ способный Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ значСния Ρ‚ΠΈΠΏΠ° Integer.

Π’Π°ΠΊ ΠΊΠ°ΠΊ отсчСт элСмСнтов начинаСтся с Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π°, Ρ‚ΠΎ ставится Ρ†ΠΈΡ„Ρ€Π° 3.

Другая вСрсия задания массива: ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈ послСдний Π½ΠΎΠΌΠ΅Ρ€Π° элСмСнтов массива:

Dim МойМассив (1 Во 3) As Integer

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ созданного массива Π½Π΅ содСрТат Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² массивС ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΌΡƒ элСмСнту ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ присвоСно. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, создан массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² сСбС Π΄ΠΎ пяти строк:

Dim Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊ(4) As String

Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ элСмСнту массива ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Иван Никитин, Π½Π°Π΄ΠΎ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:

Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊ(0) = «Иван Никитин»

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ создании массива сразу ΠΆΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ Π΅Π³ΠΎ, присвоив ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΡƒΡΡ‚ΡƒΡŽ строку. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» for next, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Dim сотрудник(4) As String

Dim I As Integer

For I = 0 To 4

Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊ (i) = ""

Next I

ЗначСния элСмСнтов массива ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Dim сотрудник(4) As String

Dim отпуск As String

Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊ(3) = «Иван Никитин»

отпуск = сотрудник(3)

Π—Π΄Π΅ΡΡŒ:

1) ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкой создаСтся массив Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊ, состоящий ΠΈΠ· пяти тСкстовых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ;

2) Π²Ρ‚ΠΎΡ€ΠΎΠΉ строкой создаСтся тСкстовая пСрСмСнная, имСнуСмая отпуск;

3) Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ строкой Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΌΡƒ элСмСнту массива (ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ соотвСтствуСт Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ порядковый Π½ΠΎΠΌΠ΅Ρ€) присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Иван Никитин;

4) Π² Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΉ строкС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ отпуск присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта массива Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ соотвСтствуСт Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ порядковый Π½ΠΎΠΌΠ΅Ρ€.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ элСмСнты массива содСрТат значСния, относящиСся ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ строки ΠΈΠ»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π΅Π»Ρ‹Π΅ числа. Если ΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² массивС ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Π»ΠΈΡΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², ΠΏΡ€ΠΈ создании массива ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Object:

Dim МойМассив as object

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Ρ‚Π°ΠΊΠΎΠ³ΠΎ массива ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ значСния Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²:

мойМассив(0) = Β«Π‘ΠΏΡ€ΡƒΡ‚Β»

мойМассив(1) = 56

мойМассив(2) = 3.1415

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ создания Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Ρ‚ΠΎΡ‚ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ, с Ρ‚ΠΎΠΉ лишь Ρ€Π°Π·Π½ΠΈΡ†Π΅ΠΉ, Ρ‡Ρ‚ΠΎ, указывая Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€, Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄Π²Π° значСния – строки ΠΈ столбцы:

Dim Π”Π²ΡƒΡ…ΠœΠœΠ°ΡΡΠΈΠ² (Π‘Ρ‚Ρ€ΠΎΠΊΠΈ, Π‘Ρ‚ΠΎΠ»Π±Ρ†Ρ‹) As Π’ΠΈΠΏΠ”Π°Π½Π½Ρ‹Ρ…

Π Π°Π·ΠΌΠ΅Ρ€ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ трСмя числами ΠΈ Ρ‚. Π΄.:

Dim Π’Ρ€Π΅Ρ…ΠœΠœΠ°ΡΡΠΈΠ² (X, Y, Z) As Π’ΠΈΠΏΠ”Π°Π½Π½Ρ‹Ρ…

ΠŸΡ€ΠΈ создании массивов, Π² Ρ‚ΠΎΠΌ числС ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ…, для хранСния значСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта выдСляСтся опСративная ΠΏΠ°ΠΌΡΡ‚ΡŒ (Π΄Π°ΠΆΠ΅ Ссли это Π½ΡƒΠ»Π΅Π²Ρ‹Π΅ значСния ΠΈΠ»ΠΈ пустыС строки). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, создавая большой массив, происходит Ρ€Π΅Π·ΠΊΠΎΠ΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ объСма свободной памяти, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎ ΠΎΡ‚Ρ€Π°Π·ΠΈΡ‚ΡŒΡΡ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы слСдуСт лишь ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ массивы Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ статичСскими (static), ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ число элСмСнтов Π² массивС Π½Π΅ мСняСтся.

Π’Ρ‹Π±ΠΎΡ€ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½, Ссли нСизвСстно, сколько Π΄Π°Π½Π½Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ Π²Π²Π΅Π΄Π΅Π½ΠΎ Π² массив, ΠΈΠ»ΠΈ Ссли объСм Π΄Π°Π½Π½Ρ‹Ρ…, собираСмых для массива, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ мСняСтся. Для ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ситуаций VBA ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ особый Ρ‚ΠΈΠΏ массивов, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ динамичСским (dynamic) массивом.

ДинамичСскиС массивы ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Dim, Private, Public ΠΈΠ»ΠΈ Static, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ список размСрностСй опускаСтся, Π·Π°Ρ‚Π΅ΠΌ ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€ устанавливаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ReDim Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ReDim ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

ReDim [Preserve] varname (subscripts) [As type] [, varname (subscripts) [As type]],

Π³Π΄Π΅ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Preserve ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ VBA сохраняСт Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΌΡΡ массивС, ΠΊΠΎΠ³Π΄Π° измСняСтся Ρ€Π°Π·ΠΌΠ΅Ρ€ массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ReDim;

varname – имя ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ массива;

subscripts – измСрСния массива (синтаксис для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° subscripts Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ ReDim Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Dim);

type – любой Ρ‚ΠΈΠΏ VBA ΠΈΠ»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‚ΠΈΠΏ.


НСобходимо ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ As type для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ опрСдСляСтС.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

1) Dim Month() As String – ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ динамичСский массив Month;

2) ReDim Month(1 to 30) – измСняСт Ρ€Π°Π·ΠΌΠ΅Ρ€ массива Π΄ΠΎ 30 элСмСнтов;

3) ReDim Month(31) – измСняСт Ρ€Π°Π·ΠΌΠ΅Ρ€ массива Π΄ΠΎ 31 элСмСнта;

4) ReDim Preserv Month(1 to 31) – измСняСт Ρ€Π°Π·ΠΌΠ΅Ρ€ массива Π΄ΠΎ 31 элСмСнта, сохраняя содСрТимоС;

5) Dim Table() As Integer – ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ динамичСский массив;

6) ReDim Table(3, 15) – Π΄Π΅Π»Π°Π΅Ρ‚ массив Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌ;

7) ReDim Table(4, 20) – измСняСт Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива;

8) ReDim Preserv Table(4, 25) – Ρ‚ΠΎΠ»ΡŒΠΊΠΎ измСняСт послСдний Ρ€Π°Π·ΠΌΠ΅Ρ€ массива;

9) Dim Mas as Variant – ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° Variant;

10) ReDim Mas(20) As Integer – создаСт массив 20 Ρ†Π΅Π»Ρ‹Ρ… чисСл Π² Variant.

Π’Ρ‹Π²ΠΎΠ΄Ρ‹:

1) ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послСднСС ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Preserv;

2) ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ReDim для создания Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ массива Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° Variant.

Массив Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ поэлСмСнтно. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄

Dim B(l to 2, 1 to 2) as single

Π’(1,1)=2

Π’(1,2)=5

Π’(2,1)=4

Π’(2,2)=3

создаСт Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с массивами Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹.

1. Array (списокАргумСнтов)

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ массив Ρ‚ΠΈΠΏΠ° Variant. АргумСнт Π² скобках прСдставляСт Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ запятыми список Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, присваиваСмых элСмСнтам массива.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Dim Π”Π΅Π½ΡŒ As Variant

Π”Π΅Π½ΡŒ=Array(«Пн»,"Π²Ρ‚","ср",….)

2. VBA ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‚ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΈ Π½ΠΈΠΆΠ½ΠΈΠΉ индСксы ΠΏΡ€Π΅Π΄Π΅Π»Π° массива, β€“ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Lbound ΠΈ ubound. Π­Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π½ΠΈΠΆΠ½Π΅Π΅ ΠΈ Π²Π΅Ρ€Ρ…Π½Π΅Π΅ Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Π΅ значСния индСксов статичСского ΠΈΠ»ΠΈ динамичСского массива.

Бинтаксис:

Lbound (имяМассива [, Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ])

Ubound (имяМассива [, Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ]),

Π³Π΄Π΅ ИмяМассива – имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ массива;

Π Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ – Ρ†Π΅Π»ΠΎΠ΅ число, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива, ниТнюю ΠΈΠ»ΠΈ Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция. Для ΠΏΠ΅Ρ€Π²ΠΎΠΉ размСрности слСдуСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ 1, для Π²Ρ‚ΠΎΡ€ΠΎΠΉ – 2 ΠΈ Ρ‚. Π΄. Если Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡƒΡ‰Π΅Π½, подразумСваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1.

3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Erase для очистки ΠΈΠ»ΠΈ удалСния массивов.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Erase позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Π΄Π²ΡƒΡ… Π·Π°Π΄Π°Ρ‡ Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠΌ массивом ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ – статичСским ΠΈΠ»ΠΈ динамичСским. Π’ случаС статичСских массивов Erase позволяСт ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ всС элСмСнты массива, Π² основном пСрСустанавливая массив Π² Ρ‚ΠΎ ΠΆΠ΅ самоС состояниС, ΠΊΠ°ΠΊΠΎΠ΅ ΠΎΠ½ ΠΈΠΌΠ΅Π», ΠΊΠΎΠ³Π΄Π° VBA создавал Π΅Π³ΠΎ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. Π’ случаС динамичСских массивов Erase позволяСт ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ массив ΠΈ Π΅Π³ΠΎ содСрТимоС ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти.

VBA удаляСт ΠΈΠ· памяти массивы, ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅ΠΌΡ‹Π΅ локально Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ (Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅), ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ. Однако массивы, ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅ΠΌΡ‹Π΅ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚, ΠΏΠΎΠΊΠ° любая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π² этом ΠΌΠΎΠ΄ΡƒΠ»Π΅ выполняСтся. Если ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° большая, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ рСсурс памяти, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ динамичСскими массивами ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ уровня. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Erase позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ это.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Erase ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

Erase array1 [, array2, …]

Π—Π΄Π΅ΡΡŒ array1 ΠΈ array2 ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ любоС допустимоС имя массива VBA.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Erase удаляСт ΠΈΠ· памяти динамичСскиС массивы, освобоТдая ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти, Ρ€Π°Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ этим массивом. ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ динамичСского массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Erase Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ReDim ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ динамичСский массив снова. ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ доступа ΠΊ элСмСнтам Π² динамичСском массивС, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±Ρ‹Π» использован ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Erase, Π±Π΅Π· Π΅Π³ΠΎ пСрСопрСдСлСния, VBA ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ сообщСниС ΠΎΠ± ошибкС.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π² VBA ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ массивы с Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Π±Π°Π·ΠΎΠΉ. Π’ систСмС Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Π±Π°Π·ΠΎΠΉ индСкс для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта Π² любом ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΈ массива являСтся Ρ€Π°Π²Π½Ρ‹ΠΌ 0; массив с 10 элСмСнтами ΠΈΠΌΠ΅Π΅Ρ‚ индСксы ΠΎΡ‚ 0 Π΄ΠΎ 9.

Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅, Ссли Π±Ρ‹ элСмСнты массива Π½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π»ΠΈΡΡŒ начиная с 1, Π° Π½Π΅ с 0. VBA позволяСт Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ число для элСмСнтов массива, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ компилятора Option Base для указания Ρ‚ΠΎΠ³ΠΎ, Π΄ΠΎΠ»ΠΆΠ½Π° Π»ΠΈ нумСрация индСксов Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с 0 ΠΈΠ»ΠΈ с 1.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° компилятора Option Base ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

Option Base 0 | 1

Если ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Option Base Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, VBA Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΡŽ индСксов массива с 0 (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ). НСобходимо ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Option Base Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ объявлСний модуля ΠΏΠ΅Ρ€Π΅Π΄ объявлСниями Π»ΡŽΠ±Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, констант ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€. НСльзя ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Option Base Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹. МоТно ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Option Base Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅; ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Option Base влияСт Π½Π° всС массивы, ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅ΠΌΡ‹Π΅ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΠΈ ΠΎΠ½ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅.