Π Π°Π·Π½ΠΎΠ΅

Vba массив массивов: Массив Π² массивС vba — CodeRoad

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Массив Π² массивС vba — CodeRoad

я Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив Π² массивС

Π²ΠΎΡ‚ ΠΌΠΎΠΉ ΠΊΠΎΠ΄:

Dim servers(2) As String
Dim parameters(3) As String
Dim i, j As Integer

parameters(0) = "db1"
parameters(1) = "server1"
parameters(2) = "user1"
parameters(3) = "password1"

For i = 0 To 2
    For j = 0 To 3
       servers(i) = parameters(j)
    Next j
Next i

Π― сдСлал графичСский ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ знаю ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ:
https://i.stack.imgur.com/1uSme.png

arrays

vba

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ


Alessandro95 Β  Β 

19 апрСля 2017 Π² 12:30

3 ΠΎΡ‚Π²Π΅Ρ‚Π°


  • Массив ΠΈΠ· 600 + строк Π² excel VBA

    Π― дСлаю Ρ†ΠΈΠΊΠ» для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки Π² массивС Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ filename = Array(file1,file2…..file600) Однако VBA ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ компиляции, которая Π²Ρ‹Π·Π²Π°Π½Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ массив Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 8 строк. Насколько ΠΌΠ½Π΅ извСстно, ΠΎΠ½ допускаСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 1 строку (ошибка Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ список ΠΈΠ»ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ)…

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ строк Π² массив: VBA

    Π― ΡΡ‚Ρ€ΠΎΡŽ гСнСтичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π² VBA, ΠΈ моя функция пригодности зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, сколько Π΅Π΄ΠΈΠ½ΠΈΡ† ΠΈΠΌΠ΅Π΅Ρ‚ строка массива. Массив прСдставляСт собой ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ 1 ΠΈ 0. Массив ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любого Ρ€Π°Π·ΠΌΠ΅Ρ€Π° (2D), ΠΈ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ число 1 Π² строкС ΠΈ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с rest значСниями. Π― рассматривал Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ…



4

ΠŸΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‚ΠΈΠΏ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡ‡ΡŒ:

Type tServerData
    DBname As String
    ServerID As String
    UserName As String
    Password As String
End Type

Dim ServerData(0 To 2) As tServerData

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π΅ΡΡ‚ΡŒ arrray для 3 сСрвСров, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

ServerData(0).DBname= "db1"

ΠΈ Ρ‚.Π΄.

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Paul Ogilvie Β  Β 

19 апрСля 2017 Π² 12:40



1

На самом Π΄Π΅Π»Π΅ Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ массив 2-D для заполнСния вашСго servers, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

Option Explicit

Sub x()

Dim servers(2, 3) As String
Dim parameters() As Variant
Dim i As Long, j As Long

parameters = Array("db", "server", "user", "password")

For i = 0 To 2
    For j = LBound(parameters) To UBound(parameters)
       servers(i, j) = parameters(j) & i + 1
    Next j
Next i

End Sub

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Shai Rado Β  Β 

19 апрСля 2017 Π² 12:39



0

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив:

Dim parameters(10,10) As String

parameters(1,1) = "db1"
parameters(1,2) = "server1"
. ..
parameters(2,1) = "db2"
parameters(2,2) = "server2"
...

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


David G Β  Β 

19 апрСля 2017 Π² 12:38


  • ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ индСкса элСмСнта Π² массивС VBA

    Π― ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ индСкс элСмСнта Π² массивС VBA, Π½ΠΎ Ρƒ мСня Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Π΅Π³ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ. Const NoOfVol As Integer = 5 Dim vol(NoOfVol) As Integer For Index = 1 To NoOfVol vol(Index) = Cells(15 + Index, 8).Value Next Массив выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: (-2500,-1250,0,1250,2500). Π― Π²Ρ‹Π·Ρ‹Π²Π°ΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ…

  • Как Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π° массивов Π² массивС Π² VBA

    Π£ мСня Π΅ΡΡ‚ΡŒ список массивов. Π― ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°ΡŽ Ρ†ΠΈΠΊΠ»Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² массивы Π² тСкстовый Ρ„Π°ΠΉΠ». Когда я ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°ΡŽ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ массив для доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ. Π― Π΄ΡƒΠΌΠ°ΡŽ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π° этих массивов Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ массивС, ΠΈ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ прохоТдСния Ρ†ΠΈΠΊΠ»Π° я ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ…


ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ вопросы:

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ индСкс элСмСнта Π² массивС Excel VBA

Π£ мСня Π΅ΡΡ‚ΡŒ массив prLst, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой список Ρ†Π΅Π»Ρ‹Ρ… чисСл. Π¦Π΅Π»Ρ‹Π΅ числа Π½Π΅ ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΡ… ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² массивС прСдставляСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ столбСц Π² элСктронной Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π― Ρ…ΠΎΡ‡Ρƒ…

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ массива VBA Π² массив «column»

Как ΠΌΠ½Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ извСстно, массив Π² Excel ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° Π²ΠΈΠ΄Π° прСдставлСния : {1,2,3,4} also known as one-dimensional horizontal array ΠΈ {1;2;3;4} also known as one-dimensional vertical array Π― создал…

Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ VBA Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ значСния Π² массивС

Π£Π²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ экспСрты, я Ρ…ΠΎΡ‡Ρƒ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² массивС VBA, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вычисляСтся Ρ†ΠΈΠΊΠ»ΠΎΠΌ VBA. послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π° я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот массив VBA для ΠΌΠΎΠ΅Π³ΠΎ дальнСйшСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°…

Массив ΠΈΠ· 600 + строк Π² excel VBA

Π― дСлаю Ρ†ΠΈΠΊΠ» для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки Π² массивС Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ filename = Array(file1,file2. ….file600) Однако VBA ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ компиляции, которая Π²Ρ‹Π·Π²Π°Π½Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ массив Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 8 строк….

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ строк Π² массив: VBA

Π― ΡΡ‚Ρ€ΠΎΡŽ гСнСтичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π² VBA, ΠΈ моя функция пригодности зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, сколько Π΅Π΄ΠΈΠ½ΠΈΡ† ΠΈΠΌΠ΅Π΅Ρ‚ строка массива. Массив прСдставляСт собой ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ 1 ΠΈ 0. Массив ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любого Ρ€Π°Π·ΠΌΠ΅Ρ€Π°…

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ индСкса элСмСнта Π² массивС VBA

Π― ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ индСкс элСмСнта Π² массивС VBA, Π½ΠΎ Ρƒ мСня Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Π΅Π³ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ. Const NoOfVol As Integer = 5 Dim vol(NoOfVol) As Integer For Index = 1 To NoOfVol vol(Index) = Cells(15 +…

Как Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π° массивов Π² массивС Π² VBA

Π£ мСня Π΅ΡΡ‚ΡŒ список массивов. Π― ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°ΡŽ Ρ†ΠΈΠΊΠ»Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² массивы Π² тСкстовый Ρ„Π°ΠΉΠ». Когда я ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°ΡŽ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ массив для доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ. Π― Π΄ΡƒΠΌΠ°ΡŽ ΠΎ…

VBA: массив & Π‘Π§Π•Π’Π•Π‘Π›Π˜

ВсС, Π― ΠΈΠ·ΠΎ всСх сил ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΡΠ»ΡƒΡ‡Π°ΡŽ Π² Excel VBA: Из Ρ€Π°Π·Π½Ρ‹Ρ… листов я создал массив Π² VBA (4 столбца: ΠΊΠ»ΡŽΡ‡, Ρ‚ΠΈΠΏ, Π΄Π°Ρ‚Π° дСйствия A, Π΄Π°Ρ‚Π° дСйствия B), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Π― Ρ€Π΅ΡˆΠΈΠ» Π½Π΅…

Найти срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² массивС (Excel VBA)

Как Π½Π°ΠΉΡ‚ΠΈ срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, содСрТащихся Π² массивС 2D Π² excel VBA? Π£ мСня Π΅ΡΡ‚ΡŒ массив с ΠΈΠΌΠ΅Π½Π΅ΠΌ Numbers, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ значСния 1,2,3,4,6 ΠΊΠ°ΠΊ ΠΌΠ½Π΅ ввСсти срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ…

Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· excel Π² массив VBA

Π£ мСня Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… столбца, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Ρ…ΠΎΡ‡Ρƒ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² массивС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ VBA. ПослС Π΅Π³ΠΎ сохранСния я Π±ΡƒΠ΄Ρƒ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° элСмСнт Π² массивС ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ сравнСниС. Dim tRange As Range…

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° массивов — VBA

Π’ повсСднСвной ΠΆΠΈΠ·Π½ΠΈ часто приходится Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ, прСдставлСнной Π² Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅. Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ элСктронныС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ VBA.

Массив – это структурированный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, конСчная упорядочСнная ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, доступ ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ осущСствляСтся ΠΏΠΎ индСксу (порядковому Π½ΠΎΠΌΠ΅Ρ€Ρƒ). ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹, ΠΊΠΎΠ³Π΄Π° трСбуСтся нСсколько Ρ€Π°Π· ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Π³Ρ€ΡƒΠΏΠΏΠ΅ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Π”Π°Π½Π½Ρ‹Π΅ Π² массивах

ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ любого Ρ‚ΠΈΠΏΠ°: Ρ‚ΠΈΠΏ элСмСнтов массива распознаСтся ΠΏΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ. ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Dim. ΠŸΡ€ΠΈ объявлСнии указываСтся имя массива, Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΈ количСство элСмСнтов ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ размСрности (эти количСства Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π΄ΠΎ объявлСния массива).

ИспользованиС массивов Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌΠΈ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

ВсС дСйствия с массивами Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ поэлСмСнтно, Π² Ρ†ΠΈΠΊΠ»Π΅. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ массив β€” это ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ с извСстным числом элСмСнтов, ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» For.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ срСдний рост ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ, записанным Π² элСктронной Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычислСния срСднСго роста Π±ΡƒΠ΄ΡƒΡ‚ записаны Π² ячСйку B9.

РСшСниС.

Sub срСдний_рост()
Dim Rost(6) As Double
Dim i As Integer
Dim Π‘ΡƒΠΌΠΌΠ°, Π‘Ρ€Π΅Π΄Π½Π΅Π΅ As Double
Β 
' Π²Π²ΠΎΠ΄ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ
For i = 1 To 6
Rost(i) = Cells(1 + i, 2).Value
Next i
Β 
' Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ суммы чисСл Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅
Π‘ΡƒΠΌΠΌΠ° = 0
For i = 1 To 6
Π‘ΡƒΠΌΠΌΠ° = Π‘ΡƒΠΌΠΌΠ° + Rost(i)
Next i
Β 
' вычислСниС срСднСго
Π‘Ρ€Π΅Π΄Π½Π΅Π΅ = Π‘ΡƒΠΌΠΌΠ° / 6
Β 
'Π²Ρ‹Π²ΠΎΠ΄
Cells(9, 2).Value = Π‘Ρ€Π΅Π΄Π½Π΅Π΅
MsgBox (Π‘Ρ€Π΅Π΄Π½Π΅Π΅)
End Sub

ПояснСниС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

Π’ строкС Dim Rost(6) As Doubl ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ массив чисСл Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ точности ΠΈΠΌΠ΅Π½Π΅ΠΌ Rost Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ 6, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ одномСрная Ρ‚Π°Π±Π»ΠΈΡ†Π° Rost Π΅ΠΌΠΊΠΎΡΡ‚ΡŒΡŽ 6 (ΡˆΠ΅ΡΡ‚ΡŒ) ячССк.

Аналогичным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΉ массив симмСтричным ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ своСй Π³Π»Π°Π²Π½ΠΎΠΉ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ. Π”Π°Π½Π½Ρ‹Π΅ записаны Π² элСктронной Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

РСшСниС.

Sub simetria()
Const n = 4
Dim i, j
Dim x(n, n)
Dim t, check As Boolean
For i = 1 To n
For j = 1 To n
x(i, j) = Cells(i, j)
Next
Next
t = True 'ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° симмСтрична
i = 2
While t And (i < n)
j = 1
While (j < i) And (x(i, j) = x(j, i))
j = j + 1
Wend
t = (j = i)
i = i + 1
Wend
check = t
MsgBox check
End Sub

arrays — ОбъСдинСниС Π΄Π²ΡƒΡ… массивов Π² VBA?

Как ΠΌΠ½Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ эти массивы с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ (2, 4, 5, 3, 7, 6)?

array1 = Array(4,5,3,7,6)

array2 = Array(2)

3

attemptingpython

11 Π”Π΅ΠΊ 2018 Π² 18:41

3 ΠΎΡ‚Π²Π΅Ρ‚Π°

Π›ΡƒΡ‡ΡˆΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Π’Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Join() ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ваши Π΄Π²Π° массива, Π° Π·Π°Ρ‚Π΅ΠΌ Split() Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Π½ΠΎΠ²Ρ‹ΠΉ массив:

array3 = Split(Join(array2, ",") & "," & Join(array1, ","), ",")

ОбъяснСниС :
Join() Π²Π΅Ρ€Π½Π΅Ρ‚ строку, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива (ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€) Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ "," (Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ). ΠœΡ‹ объСдиняСм эти Π΄Π²Π° ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Ρ… массива Π΅Ρ‰Π΅ с ΠΎΠ΄Π½ΠΎΠΉ запятой, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ строку Ρ‚ΠΈΠΏΠ° 2,4,5,3,7,6. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Split(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ эту строку ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² массив, ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‰ΠΈΠΉ Split(), Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ являСтся запятой ",".

6

JNevill
11 Π”Π΅ΠΊ 2018 Π² 15:59

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ arrayLists. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ обСспСчиваСт Π»Π΅Π³ΠΊΡƒΡŽ сортировку, Ссли трСбуСтся.

Option Explicit
Public Sub test()
    Dim list1 As Object, list2 As Object

    Set list1 = CreateObject("System.Collections.Arraylist")
    Set list2 = CreateObject("System.Collections.Arraylist")
    list1.Add 4
    list1.Add 5
    list1.Add 3
    list1.Add 7
    list1.Add 6
    list2.Add 2
    list1.addRange list2
    list1.Sort
End Sub

4

QHarr
11 Π”Π΅ΠΊ 2018 Π² 15:56

Поздно Π½Π° Π²Π΅Ρ‡Π΅Ρ€ΠΈΠ½ΠΊΡƒ, Π½ΠΎ я Ρ‚Π°ΠΊΠΆΠ΅ добавлю свои Π΄Π²Π° Ρ†Π΅Π½Ρ‚Π°

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΄Π²ΡƒΡ… массивов Π² Π½ΠΎΠ²Ρ‹ΠΉ массив. Π—Π°Ρ‚Π΅ΠΌ Redim Preserve это Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π²ΡƒΡ… исходных массивов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ‚Π΅ΠΌ Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ массив. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ, Π½ΠΎ выполняСт Ρ€Π°Π±ΠΎΡ‚Ρƒ быстро, Π±Π΅Π· прСобразования ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…:

Sub Test()

Dim arr1 As Variant: arr1 = Array(4, 5, 3, 7, 6)
Dim arr2 As Variant: arr2 = Array(2)
Dim arr3 As Variant: arr3 = arr2

ReDim Preserve arr3(UBound(arr1) + Ubound(arr2) + 1)
For x = (UBound(arr3) - UBound(arr1)) To UBound(arr3)
    arr3(x) = arr1(x - UBound(arr2) - 1)
Next x

End Sub

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Data Type с использованиСм Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Type ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ:

Sub Test()

Dim arr1 As Variant: arr1 = Array(CDbl(4), CLng(5), CStr(3), CDate(7), CCur(6))
Dim arr2 As Variant: arr2 = Array(2)
Dim arr3 As Variant: arr3 = arr2

ReDim Preserve arr3(UBound(arr1) + Ubound(arr2) + 1)
For x = (UBound(arr3) - UBound(arr1)) To UBound(arr3)
    arr3(x) = arr1(x - UBound(arr2) - 1)
Next x

End Sub

1

JvdV
6 Π€Π΅Π² 2020 Π² 21:13

Π’Π΅ΠΌΠ°: ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² vba — ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ вопросы

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ
Ρ€Π°Π±ΠΎΡ‚Π°

Π’Π΅ΠΌΠ°: ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² VBA

ЦСль: ΠžΡΠ²ΠΎΠΈΡ‚ΡŒ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ
массивов в VBA

Π—Π°Π΄Π°Ρ‡ΠΈ

  1. Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ тСорСтичСского ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°

  2. ΠŸΡ€ΠΈΠ²ΠΈΡ‚ΠΈΠ΅ Π½Π°Π²Ρ‹ΠΊΠΎΠ² ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ
    Ρ€Π°Π±ΠΎΡ‚Ρ‹ с элСктронными ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°ΠΌΠΈ

Задания

  1. Π˜Π·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»

  2. Π Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

  3. ΠžΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π² конспСктС Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅
    вопросы

  4. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ задания

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ вопросы

  1. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сортировка массива? Для Ρ‡Π΅Π³ΠΎ
    ΠΎΠ½Π° производится?

  2. Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ производится ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅
    элСмСнтов массива?

  3. Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ производится вставка
    элСмСнтов массива?

ΠœΠ°ΡΡΠΈΠ²Ρ‹

Часто
Π±Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ
Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ с Π΅Π΄ΠΈΠ½Ρ‹ΠΌ
Ρ†Π΅Π»Ρ‹ΠΌ. j)

ОбъявлСниС массива

Как
ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, массивы Π΄ΠΎΠ»ΠΆΠ½Ρ‹
Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹. ОписаниС массива выглядит
ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Dim Имя массива
(Π Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива) As
Π’ΠΈΠΏ элСмСнтов.

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

Dim
A (100) As Integer

Dim
B (50) As Byte

Dim
Π‘ (40) As
Double

ΠŸΡ€ΠΈ
Ρ‚Π°ΠΊΠΎΠΌ описании массива Π΅Π³ΠΎ элСмСнты
ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ (Ρ‚.Π΅. Π½ΡƒΠΌΠ΅Ρ€ΡƒΡŽΡ‚ΡΡ), начиная
с нуля.

Если
ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ описания Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ
ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Dim
A (1 To 100) As Integer,

Ρ‚ΠΎ элСмСнты массива ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ с
Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹.

Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ массива ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ:

  • с
    ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

  • ΠΏΠΎ
    Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ

  • случайными
    значСниями ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°
    случайных чисСл, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ инициализируСтся
    инструкциСй Randomize
    Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΈ активизируСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ
    Rnd, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅ΠΉ
    вСщСствСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°
    [0;1)
    .

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

Randomize

For
i = 1 To 10

A(i)
= Int(Rnd
* 101) – 50 β€˜Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
массива Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами [-50;50]

Next
i

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° элСмСнтов ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ
массива ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ β€œΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ°β€

Рассмотрим ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив А:

– 4 6 – 2 10

НуТно Ρ€Π°ΡΡΡ‚Π°Π²ΠΈΡ‚ΡŒ элСмСнты этого массива
ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ.

ΠœΠ΅Ρ‚ΠΎΠ΄ β€œΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ°β€ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ,
Ρ‡Ρ‚ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄Π²Π° сосСдних элСмСнта
массива ΠΈ, Ссли ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… мСньшС
Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ, Ρ‚ΠΎ ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ мСстами
(сортировка ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ).

I просмотр

– 4 6 – 2 10

6 – 4 – 2 10

6 – 2 – 4 10

6 – 2 10 – 4

II
просмотр

6 – 2 10 – 4

6 10 – 2 – 4

III
просмотр

6 10 – 2 – 4

10 6 – 2 – 4

Для получСния Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°
Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Option
Explicit

Sub
PR19()

Dim A(30) As Integer

Dim
N As Integer

Dim
I As Integer

Dim
K As Integer

Dim
R As Integer

N = Val(InputBox(«Π’Π²Π΅Π΄ΠΈΡ‚Π΅
N»))

For I = 1 To
N

Cells(1,I) =
Int(Rnd * 100 –
50) β€˜ Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ячССк Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа

β€˜ случайными числами

A(I) = Cells(1,I) β€˜ Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
массива

Next
I

β€˜ Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° массива

For K = 1 To
N–1

For I = 1 To N–K

If A(I)

R = A(I) β€˜ ΠŸΠ΅Ρ€Π΅ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ°
элСмСнтов

A(I) = A(I+1)

A(I+1) = R

End If

Next I

Next K

β€˜ РаспСчатка ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ массива Π½Π°
Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ листС Excel

Cells(3,3) = «Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½Ρ‹ΠΉ
массив»

For
I = 1 To N

Cells(5,I) = A(I)

Next I

End Sub

Π‘Π°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° β„– 10

Π’ 1

  1. Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ
    элСмСнты массива ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ ΠΈ
    Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ сумму ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈ послСднСго
    элСмСнтов.

  2. Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ
    элСмСнты массива ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ ΠΈ ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ
    мСстами ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈ послСдний элСмСнты.

Π’ 2

  1. Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ
    элСмСнты массива ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ ΠΈ Π½Π°ΠΉΡ‚ΠΈ
    ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ· Π΄Π²ΡƒΡ… ΠΏΠ΅Ρ€Π²Ρ‹Ρ… элСмСнтов.

  2. Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ
    элСмСнты массива ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ
    ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈ послСднСго
    элСмСнтов.

Π’ 3

  1. Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ
    элСмСнты массива ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ ΠΈ
    Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ сумму ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Ρ‚Ρ€Π΅Ρ… элСмСнтов.

  2. Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ
    элСмСнты массива ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ ΠΈ ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ
    мСстами Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ прСдпослСдний элСмСнты.

Π’ 4

  1. Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ
    элСмСнты массива ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ ΠΈ
    Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ· Ρ‡Π΅Ρ‚Π½Ρ‹Ρ…
    элСмСнтов.

  2. Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ
    элСмСнты массива ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ ΠΈ Π½Π°ΠΉΡ‚ΠΈ
    ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ
    элСмСнтов.

Π’ 5

  1. Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ
    элСмСнты массива ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ ΠΈ Π½Π°ΠΉΡ‚ΠΈ
    сумму ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠ³ΠΎ элСмСнтов.

  2. Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ
    элСмСнты массива ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ ΠΈ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ
    мСстами ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈ пятый элСмСнты.

Π’ 6

  1. Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ
    элСмСнты массива ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ ΠΈ Π½Π°ΠΉΡ‚ΠΈ
    ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅
    массива.

  2. Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ
    элСмСнты массива ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ ΠΈ Π½Π°ΠΉΡ‚ΠΈ
    ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ послСдних Π΄Π²ΡƒΡ… элСмСнтов.

Π’ 7

  1. Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ
    элСмСнты массива ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ ΠΈ
    ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ мСстами Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ послСдний
    элСмСнты.

  2. Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ
    элСмСнты массива ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ ΠΈ Π½Π°ΠΉΡ‚ΠΈ
    ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈ пятого
    элСмСнтов.

Π’ 8

  1. Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ
    элСмСнты массива ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ ΠΈ Π½Π°ΠΉΡ‚ΠΈ
    сумму ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов.

  2. Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ
    элСмСнты массива ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ ΠΈ ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ
    мСстами Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт.

Π’ 9

  1. Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ
    элСмСнты массива ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ ΠΈ Π½Π°ΠΉΡ‚ΠΈ
    сумму Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈ пятого элСмСнтов.

  2. Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ
    ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ массива ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ ΠΈ
    ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈ послСдний элСмСнты.

Π’ 10

  1. Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ
    Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ массива ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ
    ΠΈ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈ ΡˆΠ΅ΡΡ‚ΠΎΠ³ΠΎ
    элСмСнтов.

  2. Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ
    элСмСнты массива ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ ΠΈ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ
    мСстами ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ
    элСмСнты.

Π‘Π°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° β„– 11

Π’ 1

Π—Π°Π΄Π°Π½ цСлочислСнный массив А(10).
Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ элСмСнты.

Π’ 2

Π—Π°Π΄Π°Π½ цСлочислСнный массив А(10).
Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Π΅
элСмСнты.

Π’ 3

Π—Π°Π΄Π°Π½ цСлочислСнный массив А(10).
Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ элСмСнты
массива, ΠΊΡ€Π°Ρ‚Π½Ρ‹Π΅ 7.

Π’ 4

Π—Π°Π΄Π°Π½ цСлочислСнный массив А(10).
Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅
элСмСнты.

Π’ 5

Π—Π°Π΄Π°Π½ цСлочислСнный массив А(10).
Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ Ρ‚Π΅ элСмСнты
массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ стоят Π½Π° Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… мСстах.

Π’ 6

Π—Π°Π΄Π°Π½ цСлочислСнный массив А(10).
Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ Ρ‚Π΅ элСмСнты
массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ стоят Π½Π° Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ…
мСстах.

Π’ 7

Π—Π°Π΄Π°Π½ цСлочислСнный массив А(10).
Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ элСмСнты, стоящиС Π½Π° Ρ‡Π΅Ρ‚Π½Ρ‹Ρ…
мСстах, ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ, Π° стоящиС Π½Π°
Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… мСстах, ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ.

Π’ 8

Π—Π°Π΄Π°Π½ цСлочислСнный массив А(10).
Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ элСмСнты ΠΏΠΎ
Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ, Π° ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ.

Π’ 9

Π—Π°Π΄Π°Π½ цСлочислСнный массив А(10).
Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ элСмСнты, ΠΊΡ€Π°Ρ‚Π½Ρ‹Π΅ 3, ΠΏΠΎ
ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ, Π° Π½Π΅ΠΊΡ€Π°Ρ‚Π½Ρ‹Π΅ 3 ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ.

Π’ 10

Π—Π°Π΄Π°Π½ цСлочислСнный массив А(10).
Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ элСмСнты
ΠΊΡ€Π°Ρ‚Π½Ρ‹Π΅ 5.

Π’ 11

Π—Π°Π΄Π°Π½ цСлочислСнный массив А(10).
Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ элСмСнты,
ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρƒ (–2; 12).

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ элСмСнтов ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ
массива

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅
ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива
происходит ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ схСмС:

  1. указываСтся ΠΈΠ»ΠΈ ищСтся порядковый
    Π½ΠΎΠΌΠ΅Ρ€ элСмСнта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ
    ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· массива;

  2. всС элСмСнты, стоящиС Π·Π° удаляСмым
    элСмСнтом ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ
    Π²Π»Π΅Π²ΠΎ;

  3. количСство элСмСнтов ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ Π½Π°
    Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ
элСмСнта ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

ΠŸΡ€ΠΈΠΌΠ΅Ρ€
1

Π”Π°Π½
массив Π₯ = (– 4 8 – 6 5 8 4).

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ
ΠΈΠ· массива элСмСнт, стоящий Π½Π° Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ
мСстС.

Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚
ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ удаляСтся
Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ элСмСнт массива Π₯, выглядит
ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

k
= 3

For
i
= k
To
N
– 1 β€˜ начиная
с
k-Π³ΠΎ
ΠΈ Π΄ΠΎ прСдпослСднСго элСмСнта

X(i)
= X(i
+ 1) β€˜ сдвигаСм
элСмСнты массива Π²Π»Π΅Π²ΠΎ

Next
i

N
= N
– 1 β€˜ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅ΠΌ
Π΄Π»ΠΈΠ½Ρƒ массива Π½Π° 1

ΠŸΡ€ΠΈΠΌΠ΅Ρ€
2

Π‘Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ
ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΈΠ· случайных чисСл.
Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· массива ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ
ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнты.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ
ΠΊΠΎΠ΄

Sub
PR20()

Dim
x(40) As Integer

Dim
n As Integer

Dim
i As Integer

Dim
Min As Integer, Max As Integer

Dim
IMin As Integer, IMax As Integer

n
= Val(InputBox(«Π’Π²Π΅Π΄ΠΈΡ‚Π΅
число элСмСнтов N»))

Label1.caption
= «Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ
массив»

For
i = 1 To n

x(i)
= Int(Rnd * 100) – 50

ListBox1.AddItem
Str(x(i))

Next
i

β€˜ Поиск
минимального ΠΈ максимального элСмСнтов

Min
= x(1): Max = x(1)

For
i = 2
To n

If
x(i)

If
x(i) > Max Then Max = x(i): IMax = i

Next
i

MsgBox()

β€˜ Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅
минимального элСмСнта

For
i = IMin To n – 1

x(i)
= x(i + 1)

Next
i

n
= n – 1

β€˜ Ссли
ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт стоял ΠΏΡ€Π°Π²Π΅Π΅
минимального, Ρ‚ΠΎ ΠΎΠ½

β€˜ сдвигаСтся
Π²Π»Π΅Π²ΠΎ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ

If
IMax > IMin Then IMax = IMax – 1

β€˜ Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅
максимального элСмСнта

For
i = IMax To n – 1

x(i)
= x(i + 1)

Next
i

n
= n – 1

Label2.caption
= «ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ массив»

For
i
= 1 To
n

ListBox2.AddItem
Str(x(i))

Next
i

End
Sub

УдалСниС из массива
Π³Ρ€ΡƒΠΏΠΏΡ‹ элСмСнтов

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

Π—Π°Π΄Π°Π½
ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив 6 – 4 – 9 9 2 7
4 8. Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· Π½Π΅Π³ΠΎ всС элСмСнты, ΠΊΡ€Π°Ρ‚Π½Ρ‹Π΅
3.

I
ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ 6 – 4 – 9 9 27 4 8

Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
– 4 – 9 9 27 4 8

II
ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ – 4 – 9 9 27 4 8

Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ – 4 9 27 4 8

III
ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ – 4 9 27 4 8

Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ – 4 27 4 8

IV ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ – 4 27 4
8

Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
– 4 4 8

Для
Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ
ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

i
= 1

While
i

If
x(i) Mod 3 = 0 Then

For
j = i To n – 1

x(j)
= x(j + 1)

Next
j

n
= n – 1

Else

i
= i + 1

End
If

Wend

Вставка ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта
в массив

ΠŸΡ€ΠΈ
вставкС ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта Π² массив
Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ сначала ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ мСсто
для вставляСмого элСмСнта, Ρ‚.Π΅. β€œΡ€Π°Π·Π΄Π²ΠΈΠ½ΡƒΡ‚ΡŒβ€
элСмСнты, Π° Π·Π°Ρ‚Π΅ΠΌ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт
в массив.

Вставка Π³Ρ€ΡƒΠΏΠΏΡ‹
элСмСнтов Π² массив

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

Π’
ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ числом
0 Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сумму всСх элСмСнтов массива.

Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚
ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ происходит вставка
элСмСнтов, выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

i
= 1

While
i

If
x(i) = 0 Then

For
j = n + 1 To i + 1 Step -1

x(j)
= x(j – 1)

Next
j

x(i)
= s

n
= n + 1

i
= i + 2

Else

i
= i + 1

End
If

Wend

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ
Ρ€Π°Π±ΠΎΡ‚Π° β„– 12

Π’ 1

  1. Π£Π΄Π°Π»ΠΈΡ‚ΡŒ
    послСдний Ρ‡Π΅Ρ‚Π½Ρ‹ΠΉ элСмСнт массива.

  2. Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ
    2 ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ элСмСнтом большим
    Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ числа Π’.

Π’ 2

  1. Π£Π΄Π°Π»ΠΈΡ‚ΡŒ
    всС элСмСнты ΠΊΡ€Π°Ρ‚Π½Ρ‹Π΅ 3.

  2. Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ
    3 ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ элСмСнтом большим
    Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ числа Π’.

Π’ 3

  1. Π£Π΄Π°Π»ΠΈΡ‚ΡŒ
    всС Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ элСмСнты.

  2. Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ
    Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ число Π’ послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта,
    мСньшСго Π’.

Π’ 4

  1. Π£Π΄Π°Π»ΠΈΡ‚ΡŒ
    ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΉ 5.

  2. Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ
    Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ число Π’, послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ
    ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ элСмСнта массива.

Π’ 5

  1. Π£Π΄Π°Π»ΠΈΡ‚ΡŒ
    всС ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ элСмСнты массива.

  2. Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ3
    послС max ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ max
    элСмСнтом массива.

Π’ 6

  1. Π£Π΄Π°Π»ΠΈΡ‚ΡŒ
    ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт массива.

  2. Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ
    100 ΠΏΠ΅Ρ€Π΅Π΄ 5 элСмСнтом массива

Π’ 7

  1. Π£Π΄Π°Π»ΠΈΡ‚ΡŒ
    послСдний элСмСнты массива большС
    Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ числа Π‘.

  2. Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ
    ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ элСмСнтом
    массива Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ число Π’.

Π’ 8

  1. Π£Π΄Π°Π»ΠΈΡ‚ΡŒ
    всС элСмСнты массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ большС
    Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ числа.

  2. Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ
    Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ число B, послС
    ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ‡Π΅Ρ‚Π½ΠΎΠ³ΠΎ числа Π² массивС.

Π’ 9

  1. Π£Π΄Π°Π»ΠΈΡ‚ΡŒ
    всС Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ элСмСнты массива.

  2. Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ
    ΠΏΠ΅Ρ€Π΅Π΄ послСдним ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ элСмСнтом
    массива число Π’.

Π’ 10

  1. Π£Π΄Π°Π»ΠΈΡ‚ΡŒ
    послСдний Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹ΠΉ элСмСнт массива.

  2. Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ
    ΠΏΠ΅Ρ€Π΅Π΄ послСдним ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ элСмСнтом
    массива число Π’.

Π’ 11

  1. Π£Π΄Π°Π»ΠΈΡ‚ΡŒ
    всС Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ элСмСнты.

  2. Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ
    число А, ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ
    элСмСнтом ΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΌ Π”, Π° число Π’ послС
    ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ элСмСнта,
    ΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π”.

Π’ 12

  1. Π£Π΄Π°Π»ΠΈΡ‚ΡŒ
    ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‡Π΅Ρ‚Π½Ρ‹ΠΉ элСмСнт.

  2. Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ
    1 послС всСх элСмСнтов, Π±ΠΎΠ»ΡŒΡˆΠΈΡ… P.

БтатичСскиС ΠΈ динамичСскиС массивы Π² VBA

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ массив?Β 

Массив это Π½Π°Π±ΠΎΡ€ элСмСнтов ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ±Ρ‰Π΅Π΅ имя. А ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ этим элСмСнтам происходит ΠΏΠΎ ΠΈΡ… индСксу. ΠŸΡ€ΠΎΡ‰Π΅ говоря, это мноТСство ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… собранных Π² ΠΎΠ΄Π½Ρƒ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ. Для Π±ΠΎΠ»Π΅Π΅ ясного понимания возьмСм, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΆΠ΅ΠΌΡ‡ΡƒΠΆΠ½Ρ‹Π΅ бусы, ΠΎΠ΄Π½ΠΈ Ρ‡Π΅Ρ€Π½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π±Π΅Π»ΠΎΠ³ΠΎ. Π’Π°ΠΊ Π²ΠΎΡ‚, бусы Ρ‡Π΅Ρ€Π½ΠΎΠ³ΠΎ ΠΈ Π±Π΅Π»ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π° это массивы ΠΆΠ΅ΠΌΡ‡ΡƒΠΆΠΈΠ½, сгруппированныС ΠΏΠΎ Ρ†Π²Π΅Ρ‚Ρƒ, Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ ΠΈ Π±Π΅Π»Ρ‹ΠΉ, Π° ΠΆΠ΅ΠΌΡ‡ΡƒΠΆΠΈΠ½Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ элСмСнтами этих массивов.
ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ (Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΌΠΈ), Ρ‚Π΅ ΠΆΠ΅ Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹Π΅ бусы ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ — Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅(ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, 2D), Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΈ Ρ‚.Π΄. БтатичСскиС — ΠΊΠΎΠ»-Π²ΠΎ элСмСнтов массива ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Π½Π° этапС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π½Π΅ измСняСтся Π² процСссС выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈ динамичСскиС — число элСмСнтов ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ измСняСтся Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ОбъявлСниС статичСских массивов Π² VBA

Массив Π² VB ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ обычная пСрСмСнная, послС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Dim ΠΈΠ»ΠΈ Public, с Ρ‚ΠΎΠΉ лишь Ρ€Π°Π·Π½ΠΈΡ†Π΅ΠΉ, Ρ‡Ρ‚ΠΎ послС ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом «As«) Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ скобки.
Dim Mas () as integer

БтатичСскиС массивы ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ ΠΈ Π½ΠΈΠΆΠ½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹:
Dim Mas (2 to 50) as integer

ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ массив Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Π² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ»-Π²ΠΎ элСмСнтов:
Dim Mas (50) as integer

Π’ этом случаС ниТняя Π³Ρ€Π°Π½ΠΈΡ†Π° Π±ΡƒΠ΄Π΅Ρ‚ установлСна ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 0. Если Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ индСксом Π²ΠΎ всСх массивах Π±Ρ‹Π»Π° 1, Ρ‚ΠΎ Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² Π½Π°Ρ‡Π°Π»Π΅ модуля (ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ) ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:
Option Base 1

Для объявлСния ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ запись ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π°:
Dim Matrix (1 to 10, 1 to 10) as integer
Dim V3D (10, 10,10) as integer ‘Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив
Dim V4D (10, 10, 25, 5) as integer ‘Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив
ΠΈ Ρ‚.Π΄.

ОбъявлСниС динамичСских массивов Π² VBA

ДинамичСский массив — Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎΒ  ΠΊΠΎΠ»-Π²Π° элСмСнтов ΠΈ опрСдСляСтся Π±Π΅Π· указания Π² скобках Π³Ρ€Π°Π½ΠΈΡ†:
Dim MyDynMas () as integer

Но динамичСский массив ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ опрСдСлСния Π³Ρ€Π°Π½ΠΈΡ†, послС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова ReDim:
Dim MyDynMas () as integer
‘Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ расчСт Π³Ρ€Π°Π½ΠΈΡ†
i=4
Redim MyDynMas (i)

x = i +13
Redim MyDynMas (x)

послС пСрСопрСдСлСния ΠΊΠΎΠ»-Π²Π° элСмСнтов массива, всС элСмСнты ΠΎΠ±Π½ΡƒΠ»ΡΡŽΡ‚ΡΡ. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ значСния элСмСнтов массива, послС ReDim Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Preserve:

Redim Preserve MyDynMas (x)

Π’Π°ΠΊ ΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массивов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Π½Π° Π΄Π²ΡƒΡ…-Ρ‚Ρ€Π΅Ρ…-ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ:
Dim MyDynMas () as integer
‘Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ расчСт Π³Ρ€Π°Π½ΠΈΡ†
i=4
Redim MyDynMas (i)

x = i +13
Redim MyDynMas (i, x)

Π½ΠΎ ΡƒΡ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ размСрности массива, использованиС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Preserve для сохранСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ элСмСнтов — Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ!

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ со статичСскими ΠΈ динамичСскими массивами.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1:
Π”Π°Π½ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив с трСмя элСмСнтами ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° 3Ρ…4 (3 строки, 4 столбца). НСобходимо ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива со всСми элСмСнтами строки ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, Ρ‚.Π΅. 1-ΠΉ элСмСнт ΡƒΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ со всСми элСмСнтами ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, 2-ΠΉ со Π²Ρ‚ΠΎΡ€ΠΎΠΉ строкой ΠΈ Ρ‚.Π΄. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вывСсти Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π² сообщСнии.

OptionΒ Explicit
OptionΒ BaseΒ 1

SubΒ StatMas()
DimΒ Mas(3)Β AsΒ Integer
DimΒ Matr(3,Β 4)Β AsΒ Integer
DimΒ MsgΒ AsΒ String
DimΒ i,Β jΒ AsΒ Integer

‘заполняСм масивы
Mas(1)Β =Β 2:Β Mas(2)Β =Β 4:Β Mas(3)Β =Β 6

Matr(1,Β 1)Β =Β 4:Β Matr(1,Β 2)Β =Β 5:Β Matr(1,Β 3)Β =Β 1:Β Matr(1,Β 4)Β =Β 7
Matr(2,Β 1)Β =Β 12:Β Matr(2,Β 2)Β =Β 10:Β Matr(2,Β 3)Β =Β 2:Β Matr(2,Β 4)Β =Β 9
Matr(3,Β 1)Β =Β 24:Β Matr(3,Β 2)Β =Β 11:Β Matr(3,Β 3)Β =Β 6:Β Matr(3,Β 4)Β =Β 3

MsgΒ =Β «Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:»Β &Β Chr(13)
ForΒ iΒ =Β 1Β ToΒ 3
Β Β ForΒ jΒ =Β 1Β ToΒ 4
Β Β Β Β Β Matr(i,Β j)Β =Β Matr(i,Β j)Β *Β Mas(i)
Β Β Β Β Β ‘Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Β Π²Β ΡΡ‚Ρ€ΠΎΠΊΡƒΒ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡ,Β Ρ€Π΅Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒΒ TABΒ (chr(9))
Β Β Β Β Β MsgΒ =Β MsgΒ &Β CStr(Matr(i,Β j))Β &Β Chr(9)
Β Β NextΒ j
Β Β ‘Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΒ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΒ Π½Π°Β Π½ΠΎΠ²ΡƒΡŽΒ ΡΡ‚Ρ€ΠΎΠΊΡƒΒ chr(13)
Β Β MsgΒ =Β MsgΒ &Β Chr(13)
NextΒ i
MsgBoxΒ Msg
EndΒ Sub

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2:
Π”Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π½Π΅ извСстной Π΄Π»ΠΈΠ½Ρ‹ заполняСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Mas(i,j) = i * j. Π Π°Π·ΠΌΠ΅Ρ€Ρ‹ массива вводятся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΠΎΡ€ΠΌΡ‹ InputBox. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вывСсти Π² сообщСнии.

SubΒ DynMasTest()
DimΒ MsgΒ AsΒ String
DimΒ i,Β j,Β col,Β rowΒ AsΒ Integer
DimΒ DynMas()Β AsΒ Long

MsgΒ =Β «Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:»Β &Β Chr(13)

colΒ =Β InputBox(«Π’Π²Π΅Π΄ΠΈΡ‚Π΅Β ΠΊΠΎΠ»-во столбцов массива»,Β _
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β «ΠŸΡ€ΠΈΠΌΠ΅Ρ€Β ΡΠΎΠ·Π΄Π°Π½ΠΈΡΒ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΎΠ³ΠΎΒ ΠΌΠ°ΡΡΠΈΠ²Π°»,Β 2)
rowΒ =Β InputBox(«Π’Π²Π΅Π΄ΠΈΡ‚Π΅Β ΠΊΠΎΠ»-во строк массива»,Β _
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β «ΠŸΡ€ΠΈΠΌΠ΅Ρ€Β ΡΠΎΠ·Π΄Π°Π½ΠΈΡΒ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΎΠ³ΠΎΒ ΠΌΠ°ΡΡΠΈΠ²Π°»,Β 2)
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
ReDimΒ PreserveΒ DynMas(col,Β row)

ForΒ iΒ =Β 1Β ToΒ col
Β Β ForΒ jΒ =Β 1Β ToΒ row
Β Β Β Β DynMas(i,Β j)Β =Β iΒ *Β j
Β Β Β Β MsgΒ =Β MsgΒ &Β CStr(DynMas(i,Β j))Β &Β Chr(9)
Β Β NextΒ j
Β Β MsgΒ =Β MsgΒ &Β Chr(13)
NextΒ i
MsgBoxΒ Msg
EndΒ Sub

И напослСдок, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ (ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ) Π΄Π»ΠΈΠ½Ρƒ массива Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉΒ  UBound(). Π—Π°ΠΏΠΈΡΡŒ Ρ‚ΠΈΠΏΠ° UBound(Mas) Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΊΠΎΠ»-Π²ΠΎ элСмСнтов ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива. Если ΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива, Ρ‚ΠΎ функция ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ Π²ΠΈΠ΄ UBound(Matr, 2) – Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΊΠΎΠ»-Π²ΠΎ элСмСнтов Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ измСрСния, UBound(Matr, 3) – Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ ΠΈ Ρ‚.Π΄. Π—Π°ΠΏΠΈΡΡŒ ΠΆΠ΅ UBound(Matr, 1) Β Ρ€Π°Π²Π½ΠΎΡΠΈΠ»ΡŒΠ½Π° UBound(Mas).

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

SubΒ GetLengthMas()
DimΒ Matr(3,Β 4,Β 5)Β AsΒ Integer

MsgBoxΒ «Π Π°Π·ΠΌΠ΅Ρ€Β ΠΌΠ°ΡΡΠΈΠ²Π°:Β »Β &Β UBound(Matr,Β 1)Β &Β «x»Β &Β UBound(Matr,Β 2)Β &Β «x»Β &Β UBound(Matr,Β 3)Β _
Β Β Β Β Β Β Β &Β Chr(13)Β &Β «Π’сСго элСмСнтов:Β »Β &Β UBound(Matr,Β 1)Β *Β UBound(Matr,Β 2)Β *Β UBound(Matr,Β 3)
EndΒ Sub

Β 

ΠŸΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»: work_mass_vba.zip

Β 

Β 

VBA Excel. Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ячССк ΠΈ массив (ΠΎΠ±ΠΌΠ΅Π½ значСниями)

Главная

β€Ί

Новости

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ: 01. 09.2018

Вставка Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Excel

ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ячССк Π² массив ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ VBA Excel. ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΎΠ±ΠΌΠ΅Π½Π° значСниями ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ ΠΈ массивом.


Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ Π² Excel

ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ячССк Π² массив
ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· массива Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ячССк
ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΎΠ±ΠΌΠ΅Π½Π° значСниями

Как извСстно, VBA ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² массивах Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС, Ρ‡Π΅ΠΌ Π² ячСйках Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа Excel. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими объСмами Π΄Π°Π½Π½Ρ‹Ρ…, ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массивы, Ρ‡Π΅ΠΌ ΡΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈ Π΄ΠΎΠ»Π³ΠΎ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π²ΠΎ врСмя выполнСния ΠΊΠΎΠ΄Π°Β Π·Π° мСрцаниСм изобраТСния на экранС или ΠΏΡ€ΠΎΡΡ‚ΠΎΒ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΡƒΡŽΒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ, Ссли обновлСниС экрана ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎΒ (Application.ScreenUpdating = False). Π—Π΄Π΅ΡΡŒ ΠΎΠ±ΠΌΠ΅Π½ значСниями ΠΌΠ΅ΠΆΠ΄Ρƒ массивом ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅, Ρ‡Π΅ΠΌ умСстСн.


ΠšΡƒΡ€ΡΡ‹ программирования. Алгоритм β„–2. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² Π² ΠΊΠΎΠ½Ρ†Π΅ строки

ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ячССк Π² массив

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ значСния ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ячССк Π² массив, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° (As Variant) ΠΈ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΅ΠΉ значСния Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ячССк с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания (=):

Dim a As Variant
a = Range(«A1:C3»)

VBA Excel автоматичСски ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π² Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ размСрности Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ячССк, Π² нашСм случаС Π² массив — a(1 To 3, 1 To 3), ΠΈ заполняСт Π΅Π³ΠΎ значСниями. НумСрация ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ массивов, созданных Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, начинаСтся с Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ (1).

МоТно, Π² этом случаС, ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ сразу динамичСский массив, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ эта пСрСмСнная Π±ΡƒΠ΄Π΅Ρ‚ массивом. Π’Π°ΠΊ как свойством Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ячССк ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² VBA Excel являСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Value), Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΊΠΎΠ΄Π΅ явно Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ, Π½ΠΎ, ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡΡ такая конструкция, аналогичная ΠΏΠ΅Ρ€Π²ΠΎΠΉ:

Dim a() As Variant
a = Range(«A1:C3»).Value

Π•Ρ‰Π΅ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ динамичСский массив ΠΌΠΎΠΆΠ½ΠΎ, Π° Π²ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив с ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π·Π°Ρ€Π°Π½Π΅Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ Π½Π΅ получится.

ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· массива Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ячССк

ЗначСния Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ячССк Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΈΠ· массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания (=):

Range(«A6:F15») = a
‘ΠΈΠ»ΠΈ
Range(«A6:F15»).Value = a
‘Π³Π΄Π΅ a — пСрСмСнная Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ значСния Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ячССк ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива. Π Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ массива ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с нуля (0). ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов Π² измСрСниях массива Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с количСством строк ΠΈ столбцов Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ячССк. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ значСния Π² ΠΎΠ΄Π½Ρƒ строку ΠΈΠ»ΠΈ Π² ΠΎΠ΄ΠΈΠ½ столбСц, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ СдинствСнной строки ΠΈΠ»ΠΈ СдинствСнного столбца ΠΊΠ°ΠΊ (0) ΠΈΠ»ΠΈ (1 To 1), Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ своСго массива с Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹. НапримСр, для записи дСсяти Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· массива Π² ΠΎΠ΄Π½Ρƒ строку ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ массив — massiv(9, 0), ΠΈΠ»ΠΈΒ Π² ΠΎΠ΄ΠΈΠ½ столбСц —Β massiv(0, 9).

Для вставки значСний Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ячССк ΠΈΠ· массива идСально ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ массив, созданный для копирования Π² Π½Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°. Π’ этом случаС, Π΄Π°Π½Π½Ρ‹Π΅ с Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа Excel пСрСносятся Π² массив, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈ, послС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ,Β Π²ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Ρ‚Ρƒ ΠΆΠ΅ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ листС.

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΎΠ±ΠΌΠ΅Π½Π° значСниями

Π­Ρ‚ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ составлСны Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π°ΠΌ Π½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ Π»ΠΈΡˆΠ½ΠΈΡ… дСйствий, просто скопируйтС ΠΈΡ… Π² свой ΠΌΠΎΠ΄ΡƒΠ»ΡŒ любой ΠΊΠ½ΠΈΠ³ΠΈ Excel с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ макросов ΠΈ запуститС ΠΏΠΎ-ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1

Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива значСниями ΠΈ ΠΈ ΠΈΡ… присвоСниС Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρƒ ячССк Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ листС Excel:

Sub Test1()
Dim a(2, 2) As Variant
a(0, 0) = «Ρ‚Π΅Π»Π΅ΠΏΡƒΠ·ΠΈΠΊ»
a(0, 1) = «ΠΆΡƒΡ€Π½Π°Π»ΠΈΡΡ‚»
a(0, 2) = «ΡΡ‰Π΅Ρ€ΠΈΡ†Π°»
a(1, 0) = «ΠΊΠΎΡ€ΠΎΠ΅Π΄»
a(1, 1) = «ΡƒΡ‚Π΅Π½ΠΎΠΊ»
a(1, 2) = «ΡˆΠΌΠ΅Π»ΡŒ»
a(2, 0) = 200
a(2, 1) = 300
a(2, 2) = 400
Range(«A1:C3»). Value = a
End Sub

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС пСрСмСнная массива Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°Β (As Variant), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Π±Ρ‹ Π² Π½Π΅Π΅ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Π»ΠΈΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ тСкстовыС Π΄Π°Π½Π½Ρ‹Π΅, Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΡΡ‚Ρ€ΠΎΠΊΠΎΠ²ΡƒΡŽ (As String), ΠΈ всС Π±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2

ОбъявлСниС ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, присвоСниС Π΅ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉΒ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ячССк «A1:C3», записанных ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, ΠΈ вставка этих Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ «D10:F12»:

Sub Test2()
Dim a As Variant
a = Range(«A1:C3»)
Range(«D10:F12») = a
End Sub

ЕстСствСнно, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ ячССк располоТСны Π½Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ листС.

Π˜ΡΡ…ΠΎΠ΄Π½ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π Π΅ΠΏΠ΅Ρ‚ΠΈΡ‚ΠΎΡ€ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ. Код для студСнтов


Вопросами ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΎΠ·Π°Π΄Π°Ρ‡Π΅Π½Ρ‹ Π»ΡƒΡ‡ΡˆΠΈΠ΅ «программСрскиС» ΡƒΠΌΡ‹.
Как Π½ΠΈ Π³Π΄Π΅ Π² ΠΌΠΈΡ€Π΅, использованиС ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ ΠΎΠΏΡ‹Ρ‚Π° цСлСсообразно Π² области ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.


Π›ΡŽΠ±ΠΎΠΉ студСнт-второкурсник Π·Π½Π°Π΅Ρ‚:

  • Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ часто ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰Π΅Π³ΠΎΡΡ дСйствия Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² Ρ€Π°Π·Ρ‹ сокращаСт исходный ΠΊΠΎΠ΄;
  • ИспользованиС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π΅ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈ Π³ΠΈΠ±ΠΊΠΎΠΉ;
  • Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ области (допустим, Π³Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΈΠ»ΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…) цСлСсообразно ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ Π²
    ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊ Π½ΠΎΠ²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π² случаС нСобходимости;
  • ΠΈ Ρ‚.Π΄.



ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΡƒ Π½Π° эту ΠΆΠ΅ Ρ‚Π΅ΠΌΡƒ:

  • Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈ ΠšΠ»Π°ΡΡΡ‹ это Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΊΠ»Π°Π΄, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π·Π½Π°Π½ΠΈΠΉ
    (ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²) ΠΈΠ· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ области. Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ классов ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π²
    Π²ΠΈΠ΄Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ *.dll).;
  • Найти Π² Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½ΡƒΠΆΠ½Ρ‹ΠΉ класс это огромная ΡƒΠ΄Π°Ρ‡Π°. Π˜Π½Π°Ρ‡Π΅ придСтся ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Π³ΠΎ самому, ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ, Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.
    Но, ΠΊΠ°ΠΊ говорится, Β«Ρ‡Ρ‚ΠΎ Π‘ΠΎΠ³ Π½ΠΈ Π΄Π°Π΅Ρ‚ всС ΠΊ Π»ΡƒΡ‡ΡˆΠ΅ΠΌΡƒΒ». Π’ этом случаС Π’Ρ‹ ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ΡΡŒ Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈ ΠΎΠ±Π»Π°Π΄Π°Ρ‚Π΅Π»Π΅ΠΌ
    «сокровища». БохраняйтС ΠΈ Π±Π΅Ρ€Π΅Π³ΠΈΡ‚Π΅ Π΅Π³ΠΎ. Π’ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Π’Ρ‹ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ вспомнитС, Ρ‡Ρ‚ΠΎ Π² Π²Π°ΡˆΠΈΡ… запасах ΡƒΠΆΠ΅
    имССтся Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅Π΅ ΠΈ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΠ΅ ΠΊ использованию ΠΈΠ»ΠΈ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠ΅.


Π’ΠΎΡ‚ поэтому, куски ΠΈ кусочки Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ исходного ΠΊΠΎΠ΄Π° всСгда Π±ΡƒΠ΄ΡƒΡ‚ вострСбованы. Π‘ΠΌΠ΅Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡ….
Π’ΠΎ, Ρ‡Ρ‚ΠΎ Π² искусствС называСтся Β«ΠΏΠ»Π°Π³ΠΈΠ°Ρ‚Β» ΠΈ Π½Π΅ поощряСтся, Π² Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ΅, ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΡΡ‚ΠΈ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ выглядит с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.
«НС Π½Π°Π΄ΠΎ снова ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ‚ΡŒ вСлосипСд», — скаТут Π’Π°ΠΌ.


МСлкиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ всСгда Π±ΠΎΠ»Π΅Π΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹, Ρ‡Π΅ΠΌ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅. Из дСсятка Β«ΠΌΠ΅Π»ΠΊΠΈΡ…Β» ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΡΠΎΡ‚Π½ΡŽ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… Π½Π° Ρ€Π°Π·Π½Ρ‹Π΅ случаи ΠΆΠΈΠ·Π½ΠΈ.
Но ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Β«ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΡƒΒ» Π½Π°ΠΉΡ‚ΠΈ слоТнСС (ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π±Π΅Π· Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΈ).


Π― Π±ΡƒΠ΄Ρƒ Ρ€Π°Π΄, Ссли Π’Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° этом сайтС, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅, ΠΊΠ°ΠΊ Β«Π΄Π΅Ρ‚Π°Π»ΠΈ конструктора». Π’Π²ΠΎΡ€ΠΈΡ‚Π΅. ΠŸΠ΅Ρ€Π΅Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΠΉΡ‚Π΅.
ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅.



Π’ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΌ случаС, Ссли Ρ†Π΅ΠΉΡ‚Π½ΠΎΡ‚ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ катастрофичСски (Π° для студСнтов это ΠΎΡ‡Π΅Π½ΡŒ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎ всСгда Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚
Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Π΄Π΅Π½Π΅Π³), ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ€ΡƒΡ‡ΠΈΡ‚ΡŒ сборку ΠΌΠ½Π΅, Ρ‚.ΠΊ. составлСниС ΠΏΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹Ρ… инструкций для ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· языков:
C, C++, C#, Delphi, Visual Basic, Pascal, VBA — являСтся достаточно спСцифичСским Π²ΠΈΠ΄ΠΎΠΌ Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ
— это Π½Π°Π΄ΠΎ Π»ΡŽΠ±ΠΈΡ‚ΡŒ.


А с Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, я Π΄ΠΎΠ±Π°Π²ΠΈΠ» услугу Π‘ΠΊΠ°ΠΉΠΏ-ΠšΠΎΠ½ΡΡƒΠ»ΡŒΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅! Π­Ρ‚ΠΎ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΡƒΠΆΠ΅ ΠΏΠΈΡˆΠ΅Ρ‚ ΠΊΠΎΠ΄ сам,
Π½ΠΎ Π²Π΄Ρ€ΡƒΠ³ упСрся Π² стСну Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠ΅Π»ΠΎΡ‡ΠΈ

Π’Π΅Π΄ΡŒ Skype прСдоставляСт возмоТности

  • Π»ΠΈΠ±ΠΎ ΠΌΠ½Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ваш экран, ΠΈ ΠΏΠΎΠ΄ΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ, Π³Π΄Π΅ Π’Ρ‹ Π½Π΅ Ρ‚Π°ΠΊ поступаСтС;
  • Π»ΠΈΠ±ΠΎ я Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽ Π’Π°ΠΌ свой экран, Ρ‚.Π΅. ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽ, ΠΊΠ°ΠΊ я ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽ Π² Ρ‚Π°ΠΊΠΈΡ… случаях.


И это ΠΎΡ‡Π΅Π½ΡŒ эффСктивно!!!


Для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов, ΠΊΠ°ΠΊ Ρ€Π°Π·, самоС Π²Π°ΠΆΠ½ΠΎΠ΅ — это ΠΎΠ±ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅, Ρ‚. Π΅. поиску ошибок Π² собствСнном ΠΊΠΎΠ΄Π΅
Π’ΠΎΡ‚ эти способы ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ собствСнных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π’Ρ‹ ΠΈ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π° экранС ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π° Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‰Π΅Π³ΠΎ нас расстояния!

РазумССтся, для студСнтов, Ρ‡Ρ‚ΠΎ Π·Π°ΠΊΠ°Π·Π°Π»ΠΈ ΠΊΠΎΠ΄, час общСния ΠΏΠΎ Π‘ΠΊΠ°ΠΉΠΏΡƒ остаСтся бСсплатным.

А сСйчас, Π’ΠΠ˜ΠœΠΠΠ˜Π•! ΠžΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΈΡ… услуг!


Если Π²Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ½ΠΈΡ‚Π΅ Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½, Ρ‚ΠΎ Π’Π°ΠΌ ΠΎΡ‚Π²Π΅Ρ‡Ρƒ я.

Если Π²Ρ‹ Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π½Π° e-mail, Π·Π°Π΄Π°Π΄ΠΈΡ‚Π΅ вопрос, ΠΏΠΎΠΆΠ΅Π»Π°Π΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Ρ†ΠΈΡŽ, Ρ‚ΠΎ Π’Π°ΠΌ Π±ΡƒΠ΄Ρƒ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ нСпосрСдствСнно я.

Π’Π°ΠΌ Π½Π΅ придСтся ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ с Π°Π²Ρ‚ΠΎΠΎΡ‚Π²Π΅Ρ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ Β«Π±Π»ΠΎΠ½Π΄ΠΈΠ½ΠΊΠ°ΠΌΠΈ-попугаями», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π°ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ Ρ„Ρ€Π°Π·Π°ΠΌΠΈ.
Π’Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π»ΠΈΡ†ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ писало ΠΊΠΎΠ΄ ΠΈ нСсСт всю ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π½Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Π‘ΠΎΠ³Π»Π°ΡΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ вопросы Π² Ρ‚Π°ΠΊΠΎΠΉ ситуации Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ систСму прослоСк,
Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ выполняСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚Π²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Π΅ΠΌΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

ΠŸΠ»Π°Ρ‚Π°, понятно, Ρ‡ΡƒΡ‚ΡŒ Π²Ρ‹ΡˆΠ΅, Ρ‡Π΅ΠΌ Π² сСрвисах ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π½Π° ΠΏΠΎΡ‚ΠΎΠΊ Π½ΠΎ Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅
Π½Π΅ просто ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒ Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΈ Π·Π°Π±Ρ‹Ρ‚ΡŒ, Π° Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² Π½Π΅ΠΌ ΠΈ Π΄Π°ΠΆΠ΅ приятно ΡƒΠ΄ΠΈΠ²ΠΈΡ‚ΡŒ прСподаватСля, Ρ‚ΠΎ Π’Π°ΠΌ ΠΊΠΎ ΠΌΠ½Π΅

И особСнно ΡƒΠ΄ΠΎΠ±Π½Π° моя Β«ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Π°ΡΒ» систСма Π² случаях, ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ вопросы ΠΏΠΎ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠ΅, Π½Π°Ρ€Π°Ρ‰ΠΈΠ²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
Π­Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, касаСтся Π΄ΠΈΠΏΠ»ΠΎΠΌΠ½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚, ΠΊΠΎΠ³Π΄Π° Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ объСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½Π΅ извСстСн
ΠΈ тСхничСскоС Π·Π°Π΄Π°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠ΅, ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.


VBA — НСровныС массивы (массивы массивов)

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

НСровныС массивы НЕ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

ΠœΠ°ΡΡΠΈΠ²Ρ‹ массивов (Π·Π°Π·ΡƒΠ±Ρ€Π΅Π½Π½Ρ‹Π΅ массивы) Π½Π΅ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы, Ссли Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅ ΠΎ Π½ΠΈΡ… Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ. ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ (ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹Π΅) с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ количСством элСмСнтов Π² ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… (Π²Π½ΡƒΡ‚Ρ€ΠΈ массивов), Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π·Π°Π·ΡƒΠ±Ρ€Π΅Π½Π½Ρ‹ΠΉ массив Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ°ΠΊ Π³ΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€ΡŒ с Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ массивами, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈ Ρ€Π°Π·Π½ΠΎΠ΅ количСство элСмСнтов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π½ΠΈ Π² Ρ€Π°Π·Π½Ρ‹Ρ… мСсяцах.

Π₯отя Π·Π°Π·ΡƒΠ±Ρ€Π΅Π½Π½Ρ‹Π΅ массивы довольно Π·Π°ΠΏΡƒΡ‚Π°Π½Ρ‹ ΠΈ слоТны Π² использовании ΠΈΠ·-Π·Π° ΠΈΡ… Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ особой бСзопасности Ρ‚ΠΈΠΏΠΎΠ², Π½ΠΎ ΠΎΠ½ΠΈ ΠΎΡ‡Π΅Π½ΡŒ Π³ΠΈΠ±ΠΊΠΈΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈΠ»ΠΈ пустыС элСмСнты.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ массива с Π·Π°Π·ΡƒΠ±Ρ€ΠΈΠ½Π°ΠΌΠΈ

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Π·ΡƒΠ±Ρ‡Π°Ρ‚Ρ‹ΠΉ массив, содСрТащий Π΄Π²Π° массива, ΠΎΠ΄ΠΈΠ½ для ΠΈΠΌΠ΅Π½, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ для чисСл, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ доступ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ элСмСнту ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ

  Dim OuterArray () ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
ВусклыС ΠΈΠΌΠ΅Π½Π° () ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
ВусклыС числа () ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
'массивы ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, поэтому ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ любого Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… для Π΅Π³ΠΎ элСмСнтов

Names = Array ("Person1", "Person2", "Person3")
Числа = Массив («001», «002», «003»)

OuterArray = массив (ΠΈΠΌΠ΅Π½Π°, числа)
'НСпосрСдствСнноС прСдоставлСниС OuterArray массива, содСрТащСго массивы ΠΈΠΌΠ΅Π½ ΠΈ чисСл Π²Π½ΡƒΡ‚Ρ€ΠΈ

ΠžΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ.ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ OuterArray (0) (1)
ΠžΡ‚Π»Π°Π΄ΠΊΠ°. ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ OuterArray (1) (1)
'доступ ΠΊ элСмСнтам Π²Π½ΡƒΡ‚Ρ€ΠΈ Π·Π°Π·ΡƒΠ±Ρ€ΠΈΠ½Ρ‹, задавая ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ элСмСнта
  

ДинамичСскоС созданиС ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ массивов с Π·Π°Π·ΡƒΠ±Ρ€ΠΈΠ½Π°ΠΌΠΈ

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π² нашСм ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΊ ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΡŽ массивов, прСдставив, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ лист Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π² Excel, ΠΈ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ массив для Π²Ρ‹Π²ΠΎΠ΄Π° свСдСний ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅.

  Имя - Π’Π΅Π»Π΅Ρ„ΠΎΠ½ - ЭлСктронная ΠΏΠΎΡ‡Ρ‚Π° - НомСр ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°
Π›ΠΈΡ†ΠΎ1 - 153486231 - 1 @ Π‘Π’Π•Πš - 001
Person2 - 153486242 - 2 @ Π‘Π’Π•Πš - 002
Person3 - 153486253 - 3 @ Π‘Π’Π•Πš - 003
Person4 - 153486264 - 4 @ Π‘Π’Π•Πš - 004
Person5 - 153486275 - 5 @ Π‘Π’Π•Πš - 005
  

ΠœΡ‹ динамичСски построим массив Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΈ массив ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ столбцов, Π° массив ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ / строкС Π² Π²ΠΈΠ΄Π΅ массивов.

  ВусклыС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π² качСствС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°
'Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ массив с Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ паспорта ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°
    Для c = ΠΎΡ‚ 1 Π΄ΠΎ 4
        Если IsEmpty (Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ), Ρ‚ΠΎ
            Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ReDim (0)
            Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ (0) = Π―Ρ‡Π΅ΠΉΠΊΠΈ (1, c).  Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
        Π•Ρ‰Π΅
            Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ReDim Preserve (ΠΎΡ‚ 0 Π΄ΠΎ UBound (Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ) + 1)
            Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ (UBound (Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ)) = Π―Ρ‡Π΅ΠΉΠΊΠΈ (1, c). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
        ΠšΠΎΠ½Π΅Ρ†, Ссли
    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ
    
ВусклыС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
'Массив ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ массивы Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²
Dim Customer_Values ​​As Variant
'Customer_Values ​​будСт массивом ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π² Π΅Π³ΠΎ элСмСнтах (Name-Phone-Email-CustNum).
    
    Для r = ΠΎΡ‚ 2 Π΄ΠΎ 6
    'ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² / строки
        Для c = ΠΎΡ‚ 1 Π΄ΠΎ 4
        'ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ значСния / столбцы
            
            'ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ массив, содСрТащий значСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²
            Если IsEmpty (Customer_Values), Ρ‚ΠΎ
                ReDim Customer_Values ​​(0)
                Customer_Values ​​(0) = Π―Ρ‡Π΅ΠΉΠΊΠΈ (r, c).Π¦Π΅Π½ΠΈΡ‚ΡŒ
            ElseIf Customer_Values ​​(0) = "" Π’ΠΎΠ³Π΄Π°
                Customer_Values ​​(0) = Π―Ρ‡Π΅ΠΉΠΊΠΈ (r, c) .Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
            Π•Ρ‰Π΅
                ReDim Preserve Customer_Values ​​(ΠΎΡ‚ 0 Π΄ΠΎ UBound (Customer_Values) + 1)
                Customer_Values ​​(UBound (Customer_Values)) = Π―Ρ‡Π΅ΠΉΠΊΠΈ (r, c). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
            ΠšΠΎΠ½Π΅Ρ†, Ссли
        Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ
        
        'Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ массив customer_values ​​в массив Customers
        Если IsEmpty (ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹), Ρ‚ΠΎ
            ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ReDim (0)
            ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ (0) = Customer_Values
        Π•Ρ‰Π΅
            ReDim Preserve ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² (ΠΎΡ‚ 0 Π΄ΠΎ UBound (ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²) + 1)
            ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ (UBound (ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹)) = Customer_Values
        ΠšΠΎΠ½Π΅Ρ†, Ссли
        
        'ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ Custumer_Values, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ нСобходимости ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ массив
        ReDim Customer_Values ​​(0)
    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ

    Dim Main_Array (ΠΎΡ‚ 0 Π΄ΠΎ 1) ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
    'основной массив Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, Ρ‚Π°ΠΊ ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²
    
    Main_Array (0) = Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ
    Main_Array (1) = ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹
  

Π§Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ способ динамичСского построСния ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ динамичСскиС массивы (ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива ΠΈ динамичСская ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°) Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ массивам.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° являСтся Π·Π°Π·ΡƒΠ±Ρ€Π΅Π½Π½Ρ‹ΠΉ массив с двумя массивами, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· этих массивов с 4 элСмСнтами, 2 уровнями отступа, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ сам являСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π·Π°Π·ΡƒΠ±Ρ€Π΅Π½Π½Ρ‹ΠΌ массивом, содСрТащим 5 массивов ΠΏΠΎ 4 элСмСнта ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈ 3 уровня отступа, см. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ Π½ΠΈΠΆΠ΅ :

  Main_Array (0) - Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ - Массив («Имя», Β«Π’Π΅Π»Π΅Ρ„ΠΎΠ½Β», «ЭлСктронная ΠΏΠΎΡ‡Ρ‚Π°Β», «НомСр ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Β»)
          (1) - ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ (0) - Массив ("Person1", 153486231, "1 @ STACK", 001)
                ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ (1) - массив ("Person2", 153486242, "2 @ STACK", 002)
                ...
                ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ (4) - массив ("Person5", 153486275, "5 @ STACK", 005)
  

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ структуру созданного Π²Π°ΠΌΠΈ массива Jagged. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ основной массив содСрТит массив Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΈ массив массивов ( ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²). ), ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ способами доступа ΠΊ элСмСнтам.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± основном массивС ΠΈ распСчатаСм ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ… ΠΊΠ°ΠΊ Π’ΠΈΠΏ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ: Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ .

  Для n = 0 Π΄ΠΎ UBound (Main_Array (1))
    'n для ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π΄ΠΎ послСднСго массива Π² Main_Array (1)
    
    Для j = 0 Π² UBound (Main_Array (1) (n))
        'j Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π΄ΠΎ послСднСго элСмСнта Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ массивС Main_Array (1)
        
        Debug.Print Main_Array (0) (j) & ":" & Main_Array (1) (n) (j)
        'print Main_Array (0) (j), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ, ΠΈ Main_Array (0) (n) (j), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся элСмСнтом Π² массивС ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²
        'ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ j, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ массив Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρƒ ΠΆΠ΅ структуру, Ρ‡Ρ‚ΠΎ ΠΈ массив ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²
    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ
  

ΠŸΠžΠœΠΠ˜Π’Π•, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ структуру вашСго Jagged Array, Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ для доступа ΠΊ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Main_Array -> Customers -> CustomerNumber -> Name , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Ρ‚Ρ€Π΅Ρ…ΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ "Person4" Π²Π°ΠΌ понадобится мСстополоТСниС ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π² Main_Array, Π·Π°Ρ‚Π΅ΠΌ мСстополоТСниС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π² массивС Customers Jagged ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, мСстополоТСниС Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Π²Π°ΠΌ элСмСнта, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Main_Array (1) (3) (0) , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ — это Main_Array (Customers) (CustomerNumber) (Name) .

Как ΠΌΠ½Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Β«Π·ΡƒΠ±Ρ‡Π°Ρ‚Ρ‹ΠΉ массив» Π² VBA?

Как ΠΌΠ½Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Β«Π·ΡƒΠ±Ρ‡Π°Ρ‚Ρ‹ΠΉ массив» Π² VBA? — ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка

ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ Stack Overflow , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ, Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ знаниями ΠΈ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ свою ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Ρƒ.

Бпросил

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΎ
45k Ρ€Π°Π·

Π£ мСня Ρ†Π΅Π»Ρ‹ΠΉ класс Π΄Π΅Ρ‚Π΅ΠΉ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ свои Π»ΡŽΠ±ΠΈΠΌΡ‹Π΅ ΠΈΠ³Ρ€ΡƒΡˆΠΊΠΈ для задания.НСкоторыС Π΄Π΅Ρ‚ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ ΠΈΠ³Ρ€ΡƒΡˆΠΊΡƒ, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ — большС.

Как ΠΌΠ½Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π·ΡƒΠ±Ρ‡Π°Ρ‚Ρ‹ΠΉ массив, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Kids (x) (y) … Π³Π΄Π΅ x — количСство Π΄Π΅Ρ‚Π΅ΠΉ Π² ΠΌΠΎΠ΅ΠΌ классС, Π° y — список ΠΈΠ³Ρ€ΡƒΡˆΠ΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠ°ΠΊ свои Π»ΡŽΠ±ΠΈΠΌΡ‹Π΅?

ДТоэл ΠšΠΎΡ…ΠΎΡ€Π½

3,7kk103103 Π·ΠΎΠ»ΠΎΡ‚Ρ‹Ρ… Π·Π½Π°ΠΊΠ°528528 сСрСбряных Π·Π½Π°ΠΊΠΎΠ²763763 Π±Ρ€ΠΎΠ½Π·ΠΎΠ²Ρ‹Ρ… Π·Π½Π°ΠΊΠ°

Π‘ΠΎΠ·Π΄Π°Π½ 24 Ρ„Π΅Π².

Ρ„Π°Π½Ρ„Π°Π½

3,798211 Π·ΠΎΠ»ΠΎΡ‚Ρ‹Ρ… Π·Π½Π°ΠΊΠΎΠ²5858 сСрСбряных Π·Π½Π°ΠΊΠΎΠ²8181 Π±Ρ€ΠΎΠ½Π·ΠΎΠ²Ρ‹ΠΉ Π·Π½Π°ΠΊ

1

«НСровный массив» — это ΠΆΠ°Ρ€Π³ΠΎΠ½Π½ΠΎΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ массива массивов. Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… VBA Variant ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ *, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ массив. Π˜Ρ‚Π°ΠΊ, Π²Ρ‹ создаСтС массив Ρ‚ΠΈΠΏΠ° Variant ΠΈ Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· Π΅Π³ΠΎ элСмСнтов массив ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ (Ρ‚.Π΅. Π½Π΅ всС ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ).

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  Dim nStudents As Long
Dim iStudent ΠΏΠΎΠΊΠ° Π΄ΠΎΠ»Π³ΠΎ
ВусклыС ΠΈΠ³Ρ€ΡƒΡˆΠΊΠΈ () ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
Dim nToys As Long
Π£ΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ thisStudentsToys () ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚

nStudents = 5 'ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ

ReDim toys (ΠΎΡ‚ 1 Π΄ΠΎ nStudents) 'это Π±ΡƒΠ΄Π΅Ρ‚ ваш Π·Π°Π·ΡƒΠ±Ρ€Π΅Π½Π½Ρ‹ΠΉ массив

Для iStudent = 1 для nStudents
    'Π΄Π°Ρ‚ΡŒ этому ΡƒΡ‡Π΅Π½ΠΈΠΊΡƒ случайноС количСство ΠΈΠ³Ρ€ΡƒΡˆΠ΅ΠΊ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,Π³Ρ€Π°ΠΌΠΌ. Π΄ΠΎ 10)
    nToys = Int ((10 * Rnd) + 1)
    ReDim thisStudentsToys (ΠΎΡ‚ 1 Π΄ΠΎ nToys)

    'здСсь ΠΈΠ΄Π΅Ρ‚ ΠΊΠΎΠ΄ для заполнСния thisStudentsToys ()
    'своими настоящими ΠΈΠ³Ρ€ΡƒΡˆΠΊΠ°ΠΌΠΈ

    ΠΈΠ³Ρ€ΡƒΡˆΠΊΠΈ (iStudent) = thisStudentsToys
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ iStudent

Массив ΠΈΠ³Ρ€ΡƒΡˆΠ΅ΠΊ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π·ΡƒΠ±Ρ‡Π°Ρ‚Ρ‹ΠΉ.

'Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ³Ρ€ΡƒΡˆΠΊΡƒ β„– 7 ΡƒΡ‡Π΅Π½ΠΈΠΊΠ° β„–3:
Π˜Π³Ρ€ΡƒΡˆΠΊΠΈ MsgBox (3) (7)
'выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ссли Ρƒ ΡƒΡ‡Π΅Π½ΠΈΠΊΠ° β„–3 мСньшС 7 ΠΈΠ³Ρ€ΡƒΡˆΠ΅ΠΊ
  

* Π—Π°ΠΌΠ΅Ρ‚Π½Ρ‹ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΈΠΏΡ‹, опрСдСляСмыС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΈΡ….

Π‘ΠΎΠ·Π΄Π°Π½ 24 Ρ„Π΅Π².

1

МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ

  ΠžΠ±Ρ‰Π΅Π΄ΠΎΡΡ‚ΡƒΠΏΠ½Ρ‹ΠΉ субтСст ()

    Вусклый список ΠΊΠ°ΠΊ новая коллСкция
    Dim i ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число, j ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
    Вусклый элСмСнт ΠΊΠ°ΠΊ коллСкция
    Для i = ΠΎΡ‚ 1 Π΄ΠΎ 10
        Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ элСмСнт = Новая коллСкция
        Для j = 1 К i
            ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ "ΠœΠ°Π»Ρ‹Ρˆ" ΠΈ CStr (i) & "Π˜Π³Ρ€ΡƒΡˆΠΊΠ°" ΠΈ CStr (j).
        Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ j
        list.Add item
    Π”Π°Π»Π΅Π΅ я

    Debug.Print Β«Π Π΅Π±Π΅Π½ΠΎΠΊ 4, Π˜Π³Ρ€ΡƒΡˆΠΊΠ° 2 =Β» & list (4) (2)
ΠšΠΎΠ½Π΅Ρ† подписки
  

Π§Ρ‚ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Kid 4, Toy 2 = Kid4Toy2

Π‘ΠΎΠ·Π΄Π°Π½ 24 Ρ„Π΅Π².

Π”ΠΆΠΎΠ½ АлСксиуДТон АлСксиу

23.5k 66 Π·ΠΎΠ»ΠΎΡ‚Ρ‹Ρ… Π·Π½Π°ΠΊΠΎΠ²6565 сСрСбряных Π·Π½Π°ΠΊΠΎΠ²119119 Π±Ρ€ΠΎΠ½Π·ΠΎΠ²Ρ‹Ρ… Π·Π½Π°ΠΊΠΎΠ²

2

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ список ΠΈΠ³Ρ€ΡƒΡˆΠ΅ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² строку, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ‡Π΅Ρ€Ρ‚ΠΎΠΉ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Split для прСобразования строки Π² массив ΠΏΡ€ΠΈ нСобходимости:

  ПодлоТка UntangleTheString ()

Dim sToys ΠΊΠ°ΠΊ строка
Dim aToys () ΠΊΠ°ΠΊ строка
Dim x As Long

sToys = "бСйсбол | ΠΊΡƒΠΊΠ»Π° | ΠΉΠΎΠΉΠΎ"

aToys = Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ (sToys, "|")

Для x = LBound (aToys) To UBound (aToys)
    ΠžΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ.Π Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ΠΈΠ³Ρ€ΡƒΡˆΠΊΠΈ (x)
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ

ΠšΠΎΠ½Π΅Ρ† подписки
  

Π‘ΠΎΠ·Π΄Π°Π½ 26 Ρ„Π΅Π².

Π‘Ρ‚ΠΈΠ² РиндсбСргБтив РиндсбСрг

3,27011 Π·ΠΎΠ»ΠΎΡ‚ΠΎΠΉ Π·Π½Π°ΠΊ1111 сСрСбряных Π·Π½Π°ΠΊΠΎΠ²88 Π±Ρ€ΠΎΠ½Π·ΠΎΠ²Ρ‹Ρ… Π·Π½Π°ΠΊΠΎΠ²

Π–Π°Π½-Ѐрансуа ΡƒΠΊΠ°Π·Π°Π», Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ массивом Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹.Π― Π±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ», Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ массивами. НапримСр:

  Dim c ΠΊΠ°ΠΊ новая коллСкция
Π—Π°Ρ‚Π΅ΠΌΠ½ΠΈΡ‚Π΅ a (ΠΎΡ‚ 1 Π΄ΠΎ 5) ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚

c. Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ "Π°", "Π°"
c. Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ "b", "b"
Π° (1) = 5
a (2) = Массив (2,3,4)
ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ a (3) = c
a (4) = "abcd"
a (5) = Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("A1: A4"). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
  

Π—Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ элСмСнты Π² зависимости ΠΎΡ‚ нСявного Ρ‚ΠΈΠΏΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ…:

Π° (2) (1) = 3

a (3) (1) = «a»

a (5) (2,1) = всС, Ρ‡Ρ‚ΠΎ находится Π² ячСйкС A2.

Боздан 21 июл.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Excel

2,67022 Π·ΠΎΠ»ΠΎΡ‚Ρ‹Ρ… Π·Π½Π°ΠΊΠ°1818 сСрСбряных Π·Π½Π°ΠΊΠΎΠ²3333 Π±Ρ€ΠΎΠ½Π·ΠΎΠ²Ρ‹Ρ… Π·Π½Π°ΠΊΠ°

Π’Π°ΠΌ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ΅Π½ массив с Π·Π°Π·ΡƒΠ±Ρ€ΠΈΠ½Π°ΠΌΠΈ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ вашСго сцСнария, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ 2D-массив (r, c) Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.По ΠΎΠ΄Π½ΠΎΠΉ строкС для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ€Π΅Π±Π΅Π½ΠΊΠ° ΠΈ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ столбцу для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Π°Ρ€ΠΊΠ°. Π Π°Π·ΠΌΠ΅Ρ€Ρ‹ массива Π±ΡƒΠ΄ΡƒΡ‚ (количСство Π΄Π΅Ρ‚Π΅ΠΉ, максимальноС количСство ΠΏΠΎΠ΄Π°Ρ€ΠΊΠΎΠ²), ΠΈ это Π±ΡƒΠ΄Π΅Ρ‚ просто ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· слотов Π±ΡƒΠ΄ΡƒΡ‚ пустыми ΠΈΠ»ΠΈ 0 (Π² зависимости ΠΎΡ‚ вашСго Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…). Но, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Ρ‹Π²Π°Ρ‚ΡŒ массив ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ добавляСтС ΠΏΠΎΠ΄Π°Ρ€ΠΎΠΊ Ρ€Π΅Π±Π΅Π½ΠΊΡƒ.

Боздан 17 июн.

язык-vb

Stack Overflow Π»ΡƒΡ‡ΡˆΠ΅ всСго Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ JavaScript

Π’Π°ΡˆΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

НаТимая Β«ΠŸΡ€ΠΈΠ½ΡΡ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ cookieΒ», Π²Ρ‹ ΡΠΎΠ³Π»Π°ΡˆΠ°Π΅Ρ‚Π΅ΡΡŒ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Stack Exchange ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ cookie Π½Π° вашСм устройствС ΠΈ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² соотвСтствии с нашСй ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΎΠΉ Π² β€‹β€‹ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² cookie.

ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ cookie

ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

МоТно Π»ΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ массивы с Π·Π°Π·ΡƒΠ±Ρ€ΠΈΠ½Π°ΠΌΠΈ Π² Excel VBA?

Π’ VBA сущСствуСт мноТСство способов создания ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ. ВсС ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ свои прСимущСства ΠΈ нСдостатки.

ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

Π₯ΠΎΡ€ΠΎΡˆΠΎ:

  • ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ синтаксис (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° пСрСмСнная)
  • Π’ΠΈΠΏ бСзопасности. Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ всС элСмСнты ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Integer Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Integer s.
  • ΠžΡ‡Π΅Π½ΡŒ быстрый доступ ΠΊ массиву

ΠŸΠ»ΠΎΡ…ΠΎΠ΅:

  • Если Π΅ΡΡ‚ΡŒ большиС различия Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… массивов, ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²ΠΏΡƒΡΡ‚ΡƒΡŽ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ пространство, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ «ячСйки».
  • Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послСднСго измСрСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ReDim Preserve . Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ «столбцы» Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π±Π΅Π· очистки всСх Π΄Π°Π½Π½Ρ‹Ρ….

Π’Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ нСсколько Π³Ρ€Π°Π½ΠΈΡ†, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… запятыми:

  Dim intMatrix (ΠΎΡ‚ 0 Π΄ΠΎ 2, ΠΎΡ‚ 0 Π΄ΠΎ 4) ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
  

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ динамичСски ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ послСднСС ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива, Ссли сначала ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ массив Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π³Ρ€Π°Π½ΠΈΡ†:

  Dim intMatrix () As Integer 'НСинициализированный динамичСский массив
ReDim intMatrix (ΠΎΡ‚ 0 Π΄ΠΎ 4, ΠΎΡ‚ 0 Π΄ΠΎ 2) 'Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ
ReDim Preserve intMatrix (ΠΎΡ‚ 0 Π΄ΠΎ 4, ΠΎΡ‚ 0 Π΄ΠΎ 3) 'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ «строку» Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ, сохраняя ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅
  

Π—ΡƒΠ±Ρ‡Π°Ρ‚Ρ‹Π΅ массивы

Π₯ΠΎΡ€ΠΎΡˆΠΎ:

ΠŸΠ»ΠΎΡ…ΠΎ:

  • Π’Ρ‹ тСряСтС Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ² Π²ΠΎ врСмя компиляции
  • Они Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ слоТны / Π·Π°ΠΏΡƒΡ‚Π°Π½Ρ‹ ΠΈΠ·-Π·Π° Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ структуры
  • ИзмСнСниС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… массивов Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈ Π΄ΠΎΡ€ΠΎΠ³ΠΎ

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π·ΡƒΠ±Ρ‡Π°Ρ‚Ρ‹Π΅ массивы, объявляя внСшний массив Ρ‚ΠΈΠΏΠ° Variant () ΠΈ назначая Π΄Ρ€ΡƒΠ³ΠΈΠ΅ массивы элСмСнтам внСшнСго массива:

  Dim outer () As Variant 'Dynamic, поэтому ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ массивы
Dim inner () As Integer 'Dynamic, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ элСмСнты

ReDim external (ΠΎΡ‚ 0 Π΄ΠΎ 3)
ReDim Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ (ΠΎΡ‚ 0 Π΄ΠΎ 4)
внСшний (2) = Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ
  

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‚ΠΈΠΏΠ΅ утСряна Π²ΠΎ врСмя компиляции

ВсС, Ρ‡Ρ‚ΠΎ компилятор Β«Π·Π½Π°Π΅Ρ‚Β» ΠΎ внСшнСм массивС, это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ , Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ, . Π˜Ρ‚Π°ΠΊ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ скомпилирован:

  Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ objWorksheet = outer (2) (3)
  

Π₯отя Π²ΠΎ врСмя выполнСния это Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ массив ΠΏΠΎ адрСсу external (2) содСрТит Integer , Π° Π½Π΅ Worksheet ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

НСудобно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€

Одним ΠΈΠ· прСимущСств Π·ΡƒΠ±Ρ‡Π°Ρ‚ΠΎΠ³ΠΎ массива являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ массивы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Однако Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ массива. VBA просто Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ с синтаксисом; ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π½Π΅ компилируСтся:

  ReDim Preserve внСшний (2) (ΠΎΡ‚ 0 Π΄ΠΎ 5)
  

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ массива, Π²Ρ‹ сначала Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ массив ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° Π·Π°Ρ‚Π΅ΠΌ снова Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Π΅Π΅ массиву с Π·Π°Π·ΡƒΠ±Ρ€ΠΈΠ½Π°ΠΌΠΈ:

  Dim tempInts () ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
tempInts = внСшний (2)
ReDim Preserve tempInts (ΠΎΡ‚ 0 Π΄ΠΎ 5)
external (2) = Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π°
  

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ tempInts ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ массиву , Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ массивы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ сСмантику ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π² VBA.Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚Π΅ массив ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, tempInts = outer (2) , Π²Ρ‹ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚Π΅ вСсь массив. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΡ€ΠΎΠ³ΠΎ, Ссли ваш массив Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ (скаТСм, нСсколько тысяч элСмСнтов), ΠΈ Π΄Π°ΠΆΠ΅ Π΄ΠΎΡ€ΠΎΠΆΠ΅ Ссли ваш массив содСрТит строки, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ каТдая строка Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ скопирована.

НСровныС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ

Π₯ΠΎΡ€ΠΎΡˆΠΎ:

  • ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ синтаксис для добавлСния ΠΈ удалСния элСмСнтов
  • Π’Π°ΠΊΠΎΠΉ ΠΆΠ΅ Π³ΠΈΠ±ΠΊΠΈΠΉ, ΠΊΠ°ΠΊ Π·ΡƒΠ±Ρ‡Π°Ρ‚Ρ‹Π΅ массивы
  • ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ сСмантику ΠΏΠΎ ссылкС, поэтому присвоСниС дСшСво, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько ссылок Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ

ΠŸΠ»ΠΎΡ…ΠΎΠ΅:

  • Подобно Π·ΡƒΠ±Ρ‡Π°Ρ‚Ρ‹ΠΌ массивам, здСсь Π½Π΅Ρ‚ бСзопасности Ρ‚ΠΈΠΏΠΎΠ²

Если Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ часто Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ элСмСнты Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ массивы, Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Collection вмСсто массивов. Collection Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… своих элСмСнтов, поэтому Ρƒ этого Π΅ΡΡ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ нСдостатки, Ρ‡Ρ‚ΠΎ ΠΈ Ρƒ массивов Variant , Π½ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² любом случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массивы с Π·Π°Π·ΡƒΠ±Ρ€ΠΈΠ½Π°ΠΌΠΈ.

  Dim cAnimals Π² Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ

'Π”Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ статистику ΠΏΠΎ Cheetah
Dim cheetah ΠΊΠ°ΠΊ новая коллСкция

'Π›Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΊ внСшнСй ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. Π’Π°ΠΊΠΆΠ΅ cCheetah ссылаСтся Π½Π°
'Π² Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ cAnimals (1).
cAnimals.Add cCheetah

'Π›Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ.'Π Π°Π±ΠΎΡ‚Π° Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ с ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ cCheetah:
Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ vMeasurment Π² GetMeasurements ("Cheetah")
    cCheetah.Add vMeasurement
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ

'Π Π°Π±ΠΎΡ‚Π° с Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ ΠΏΡƒΡ‚Π΅ΠΌ индСксации Π²ΠΎ внСшний ΠΎΠ±ΡŠΠ΅ΠΊΡ‚
Для i = 1 To cAnimals.Count
    Для j = 1 To cAnimals (i) .Count
        cAnimals (i) (j) = cAnimals (i) (j) * dblNormalizingFactor
    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ
  

Excel VBA Array — ПолноС руководство

Π’ этой ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассматриваСтся массив VBA , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ языка программирования Excel VBA.Он ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ всС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎ массивС VBA.

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ рассмотрим, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ прСдставляСт собой массив VBA. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅. НС волнуйся. Π― Π±ΡƒΠ΄Ρƒ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ всС это Π½Π° простыС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ….

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ Π½ΠΈΠΆΠ΅ приводится ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ справочноС руководство ΠΏΠΎ с использованиСм массива VBA . Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ΡΡŒ ΠΊ Π½Π΅ΠΌΡƒ Π² любоС врСмя, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ понадобится быстроС Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ части массива VBA.

ΠžΡΡ‚Π°Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ сообщСния прСдставляСт собой Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ руководство ΠΏΠΎ массиву VBA.

Бсылки ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅ для массива VBA

Π¦ΠΈΠΊΠ»Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для чтСния Ρ‡Π΅Ρ€Π΅Π· массив VBA:
Для Ρ†ΠΈΠΊΠ»Π°
Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°

Π”Ρ€ΡƒΠ³ΠΈΠ΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… Π² VBA:
ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ VBA — Π₯ΠΎΡ€ΠΎΡˆΠΎ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ элСмСнты ΠΏΡ€ΠΈ автоматичСском ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.
VBA ArrayList — Ρƒ Π½Π΅Π³ΠΎ большС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‡Π΅ΠΌ Ρƒ Collection.
Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ VBA — позволяСт Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Ρƒ ΠΊΠ»ΡŽΡ‡ \ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.ΠžΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… прилоТСниях.

Руководство Microssoft для массивов VBA ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь.

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ руководство ΠΏΠΎ массиву VBA

Π—Π°Π΄Π°Ρ‡Π° БтатичСский массив ДинамичСский массив
ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Dim arr (ΠΎΡ‚ 0 Π΄ΠΎ 5) As Long Dim arr () As Long
Dim arr As Variant
Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π‘ΠΌ.ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π²Ρ‹ΡˆΠ΅ ReDim arr (ΠΎΡ‚ 0 Π΄ΠΎ 5) ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ (количСство элСмСнтов) Π‘ΠΌ. Π€ΡƒΠ½ΠΊΡ†ΠΈΡŽ ArraySize Π½ΠΈΠΆΠ΅. Π‘ΠΌ. Π€ΡƒΠ½ΠΊΡ†ΠΈΡŽ ArraySize Π½ΠΈΠΆΠ΅.
Π£Π²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ (ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅) Волько динамичСский ReDim Preserve arr (ΠΎΡ‚ 0 Π΄ΠΎ 6)
Π—Π°Π΄Π°Π½Π½Ρ‹Π΅ значСния arr (1) = 22 arr (1) = 22
ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ значСния total = arr (1) total = arr (1)
ΠŸΠ΅Ρ€Π²Π°Ρ позиция LBound (arr) LBound (arr)
ПослСдняя позиция Π£Π±ΡƒΠ½Ρ‚ (ΠΎΠ±Ρ€.) Π£Π±ΡƒΠ½Ρ‚ (ΠΎΠ±Ρ€.)
ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ всС элСмСнты (1D) Для i = LBound (arr) To UBound (arr)
Next i
or
For i = LBound (arr, 1) To UBound (arr, 1)
Next i
Для i = LBound (arr) To UBound (arr)
Next i
or
For i = LBound (arr, 1) To UBound (arr, 1)
Next i
ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ всС элСмСнты (2D) Для i = LBound (arr, 1) To UBound (arr, 1)
Для j = LBound (arr, 2) To UBound (arr, 2)
Next j
Next i
Для i = LBound (arr, 1) To UBound (arr, 1)
Для j = LBound (arr, 2) To UBound (arr, 2)
Next j
Next i
ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ всС элСмСнты Π£ΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ элСмСнт ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π² arr
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт
Π£ΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ элСмСнт ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π² arr
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт
ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² Sub Sub MySub (ByRef arr () As String) Sub MySub (ByRef arr () As String)
Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ѐункция GetArray () As Long ()
Dim arr (ΠΎΡ‚ 0 Π΄ΠΎ 5) As Long
GetArray = arr
End Function
Ѐункция GetArray () As Long ()
Dim arr () As Long
GetArray = arr
ΠšΠΎΠ½Π΅Ρ‡Π½Π°Ρ функция
ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Волько динамичСский Dim arr () As Long
Arr = GetArray ()
Π‘Ρ‚Π΅Ρ€Π΅Ρ‚ΡŒ массив Π‘Ρ‚Π΅Ρ€Π΅Ρ‚ΡŒ arr
* БбрасываСт всС значСния Π΄ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ
Π‘Ρ‚Π΅Ρ€Π΅Ρ‚ΡŒ arr
* УдаляСт массив
Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π² массив Волько динамичСский Dim arr As Variant
arr = Split («Π”ТСймс: Π­Ρ€Π»: ДТонс», «:»)
Массив Π² строку Dim sName As String
sName = Join (arr, «:»)
Dim sName As String
sName = Join (arr, «:»)
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ значСниями Волько динамичСский Dim arr As Variant
arr = Array («John», «Hazel», «Fred»)
Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π΄ΠΎ массива Волько динамичСский Dim arr As Variant
arr = Range («A1: D2»)
Массив ΠΊ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρƒ Π’ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ динамичСский Dim arr As Variant
Range («A5: D6») = arr

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ исходный ΠΊΠΎΠ΄ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅

НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½ΠΈΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ массив VBA ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½?

Массив VBA — это Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния списков ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ сохранСниС списка стран ΠΈΠ»ΠΈ списка Π΅ΠΆΠ΅Π½Π΅Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΡ‚ΠΎΠ³ΠΎΠ².

Π’ VBA обычная пСрСмСнная ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π·Π° Ρ€Π°Π·.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для хранСния ΠΎΡ†Π΅Π½ΠΎΠΊ учащСгося:

 'ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 1 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
Вусклый студСнт1 ΠΏΠΎΠΊΠ°
Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚1 = 55
 

Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΡƒΡ‡Π΅Π½ΠΈΠΊΠ°, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΠΈ пяти студСнтов:

ΠžΡ†Π΅Π½ΠΊΠΈ учащихся

ΠœΡ‹ собираСмся ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ эти ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΈ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡ… Π² Immediate Window.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Ѐункция Debug.Print записываСт значСния Π² нСпосрСдствСнноС ΠΎΠΊΠ½ΠΎ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ это ΠΎΠΊΠ½ΠΎ, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π² мСню View-> Immediate Window (сочСтаниС клавиш Ctrl + G)

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΌΡ‹ пишСм ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄ ΠΏΡΡ‚ΡŒ Ρ€Π°Π· — ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ студСнта:

 'https: // excelmacromastery.com /
Public Sub StudentMarks ()

    'ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ лист ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«ΠžΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈΒ»
    Dim sh As Π Π°Π±ΠΎΡ‡ΠΈΠΉ лист
    Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ sh = ThisWorkbook.Worksheets (Β«ΠœΠ΅Ρ‚ΠΊΠΈΒ»)
    
    'ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ студСнта
    Вусклый студСнт1 ΠΏΠΎΠΊΠ°
    Вусклый студСнт2 ΠΏΠΎΠΊΠ°
    Вусклый студСнт3 ΠΏΠΎΠΊΠ°
    Вусклый студСнт4 ΠΏΠΎΠΊΠ°
    Вусклый студСнт5 ΠΏΠΎΠΊΠ°

    'ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΠΈ ΡƒΡ‡Π΅Π½ΠΈΠΊΠΎΠ² ΠΈΠ· ячСйки
    Student1 = sh.Range ("C" & 3). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
    Student2 = sh.Range ("C" & 4).Π¦Π΅Π½ΠΈΡ‚ΡŒ
    Student3 = sh.Range ("C" & 5). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
    Student4 = sh.Range ("C" & 6). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
    Student5 = sh.Range ("C" & 7). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

    'ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ ΠΎΡ†Π΅Π½ΠΎΠΊ учащихся
    Debug.Print "БтудСнчСскиС ΠΎΡ†Π΅Π½ΠΊΠΈ"
    Debug.Print Student1
    Debug.Print Student2
    ΠžΡ‚Π»Π°Π΄ΠΊΠ°. Π Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Student3
    ΠžΡ‚Π»Π°Π΄ΠΊΠ°.  Π Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Student4
    Debug.Print Student5

ΠšΠΎΠ½Π΅Ρ† подписки
 

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π²Ρ‹Π²ΠΎΠ΄ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

Π’Ρ‹Ρ…ΠΎΠ΄

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с использованиСм ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ учащСгося Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ учащСгося.Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ссли Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρƒ вас Π±Ρ‹Π»Π° тысяча студСнтов, Π²Π°ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ Π±Ρ‹ Ρ‚Ρ€ΠΈ тысячи строк ΠΊΠΎΠ΄Π°!

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Ρƒ нас Π΅ΡΡ‚ΡŒ массивы, ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ Π½Π°ΡˆΡƒ Тизнь. ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ список элСмСнтов Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠ΄Π½ΠΎΠΉ структурС.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ учащСгося с использованиСм массива:

 'ExcelMacroMastery.com
Excel VBA Array – The Complete Guide
Автор: Пол КСлли 'ОписаниС: считываСт ΠΌΠ΅Ρ‚ΠΊΠΈ Π² массив ΠΈ записываСт 'массив ΠΊ нСпосрСдствСнному ΠΎΠΊΠ½Ρƒ (Ctrl + G) 'Π”Π›Π― Π—ΠΠŸΠ£Π‘ΠšΠ: Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ подмСню ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ F5 Public Sub StudentMarksArr () 'ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ лист ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«ΠžΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈΒ» Dim sh As Π Π°Π±ΠΎΡ‡ΠΈΠΉ лист УстановитС sh = ThisWorkbook.Π Π°Π±ΠΎΡ‡ΠΈΠ΅ листы (Β«Π—Π½Π°ΠΊΠΈΒ») 'ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ массив для выставлСния ΠΎΡ†Π΅Π½ΠΎΠΊ для 5 студСнтов Π£ΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ количСство учащихся (ΠΎΡ‚ 1 Π΄ΠΎ 5) Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° 'Π‘Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΠΈ учащихся ΠΈΠ· ячССк C3: C7 Π² массив 'Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ подсчитываСт строки ΠΈΠ· ячСйки C2. Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ i = 1 - это C2 плюс 1 строка, которая являСтся C3 'i = 2 - это C2 плюс 2 строки, Ρ‡Ρ‚ΠΎ составляСт C4 Вусклый я Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Для i = ΠΎΡ‚ 1 Π΄ΠΎ 5 Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚Ρ‹ (i) = sh.Range ("C2"). Offset (i) .Value Π”Π°Π»Π΅Π΅ я 'ΠŸΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΠΈ учащихся ΠΈΠ· массива Π² ΠΎΠΊΠ½ΠΎ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ доступа ΠžΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ.ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ "ΠžΡ†Π΅Π½ΠΊΠΈ учащихся" Для i = LBound (студСнты) To UBound (студСнты) Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚Ρ‹ Debug.Print (i) Π”Π°Π»Π΅Π΅ я ΠšΠΎΠ½Π΅Ρ† подписки

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ этого ΠΊΠΎΠ΄Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ для любого количСства студСнтов. Если Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ этот ΠΊΠΎΠ΄ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с 1000 студСнтами, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ (1–5) Π½Π° (1–1000) Π² объявлСнии. Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΏΡΡ‚ΡŒ тысяч строк ΠΊΠΎΠ΄Π°.

Π”Π°Π²Π°ΠΉΡ‚Π΅ быстро сравним ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ массивы. Π‘Π½Π°Ρ‡Π°Π»Π° сравним Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΡŽ:

 'пСрСмСнная
        Вусклый студСнт, ΠΏΠΎΠΊΠ°
        Вусклая страна ΠΊΠ°ΠΊ строка

        ' ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ
        Π£ΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ количСство учащихся (ΠΎΡ‚ 1 Π΄ΠΎ 3), ΠΏΠΎΠΊΠ°
        ВусклыС страны (ΠΎΡ‚ 1 Π΄ΠΎ 3) Π² Π²ΠΈΠ΄Π΅ строки
 

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ сравниваСм присвоСниС значСния:

 'ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ
        Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚1 = .Cells (1, 1)

        'ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ элСмСнту Π² массивС
        Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚Ρ‹ (1) =.Π―Ρ‡Π΅ΠΉΠΊΠΈ (1, 1)
 

НаконСц, ΠΌΡ‹ посмотрим Π½Π° запись Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

 'ВывСсти Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ
        Debug.Print Student1

        'ВывСсти Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ студСнта Π² массивС
        Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚Ρ‹ Debug.Print (1)
 

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, использованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ массивов ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅.

Π’Π°ΠΆΠ΅Π½ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ массивы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ индСкс (Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ индСксом) для доступа ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊΠΎ всСм элСмСнтам Π² массивС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° For Loop.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ вас Π΅ΡΡ‚ΡŒ нСкоторая прСдыстория полСзности массивов, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΈΡ… шаг Π·Π° шагом.

Π”Π²Π° Ρ‚ΠΈΠΏΠ° массивов VBA

БущСствуСт Π΄Π²Π° Ρ‚ΠΈΠΏΠ° массивов VBA:

  1. БтатичСский — массив фиксированной Π΄Π»ΠΈΠ½Ρ‹.
  2. Dynamic (Π½Π΅ ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с динамичСским массивом Excel) — массив, Π΄Π»ΠΈΠ½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ задаСтся Π²ΠΎ врСмя выполнСния.

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ этими Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π² основном Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ созданы. Доступ ΠΊ значСниям Π² ΠΎΠ±ΠΎΠΈΡ… Ρ‚ΠΈΠΏΠ°Ρ… массивов Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ².Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… ΠΌΡ‹ рассмотрим ΠΎΠ±Π° этих Ρ‚ΠΈΠΏΠ°.

ОбъявлСниС массива VBA

БтатичСский массив ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

 'https://excelmacromastery.com/
ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Π°Ρ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° DecArrayStatic ()

    'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ массив с мСстополоТСниями 0,1,2,3
    Dim arrMarks1 (ΠΎΡ‚ 0 Π΄ΠΎ 3) Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°

    'По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΡ‚ 0 Π΄ΠΎ 3, Ρ‚. Π΅. мСстополоТСния 0,1,2,3
    Dim arrMarks2 (3) На всю Π΄Π»ΠΈΠ½Ρƒ

    'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ массив с локациями 1,2,3,4,5
    Dim arrMarks3 (ΠΎΡ‚ 1 Π΄ΠΎ 5) ΠΏΠΎ Π΄Π»ΠΈΠ½Π΅

    'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ массив с мСстополоТСниями 2, 3, 4' Π­Ρ‚ΠΎ Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ
    Dim arrMarks4 (ΠΎΡ‚ 2 Π΄ΠΎ 4) ΠΏΠΎ Π΄Π»ΠΈΠ½Π΅

ΠšΠΎΠ½Π΅Ρ† подписки
 

Массив ΠΎΡ‚ 0 Π΄ΠΎ 3

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π΄Π»ΠΈΠ½Π° указываСтся ΠΏΡ€ΠΈ объявлСнии статичСского массива.ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Π·Π°Ρ€Π°Π½Π΅Π΅, какая Π΄Π»ΠΈΠ½Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π°. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ запускаСтС макрос, Ρƒ вас ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ трСбования ΠΊ Π΄Π»ΠΈΠ½Π΅.

Если Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ всС располоТСния массива, Ρ‚ΠΎ рСсурсы тратятся Π²ΠΏΡƒΡΡ‚ΡƒΡŽ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ большС мСст, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ReDim , Π½ΠΎ это ΠΏΠΎ сути создаСт Π½ΠΎΠ²Ρ‹ΠΉ статичСский массив.

Π£ динамичСского массива Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π΅Ρ‚. Π’Ρ‹ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Π΄Π»ΠΈΠ½Ρƒ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ Π΅Π΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости:

 'https: // excelmacromastery.com /
ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Π°Ρ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° DecArrayDynamic ()

    'ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ динамичСский массив
    Dim arrMarks () Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°

    'УстановитС Π΄Π»ΠΈΠ½Ρƒ массива, ΠΊΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹
    ReDim arrMarks (ΠΎΡ‚ 0 Π΄ΠΎ 5)

ΠšΠΎΠ½Π΅Ρ† подписки
 

ДинамичСский массив Π½Π΅ выдСляСтся, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ReDim. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° Π½Π΅ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ количСство элСмСнтов, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ массива. Π’ статичСском массивС Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Ρ€Π°Π½Π΅Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ.

ΠŸΡ€ΠΈΠ²Π΅Π΄Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы с ΠΎΡ†Π΅Π½ΠΊΠ°ΠΌΠΈ учащихся. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ динамичСского массива Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ количСство студСнтов Π½Π° листС ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ массив этой Π΄Π»ΠΈΠ½Ρ‹. Π’ статичСском массивС Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΌΡƒ количСству ΡƒΡ‡Π΅Π½ΠΈΠΊΠΎΠ².

ΠŸΡ€ΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массиву VBA

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ значСния массиву, Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€ мСстополоТСния. Π’Ρ‹ Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΎΠ±ΠΎΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² массивов ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ:

 'https://excelmacromastery. com/
Public Sub AssignValue ()

    'ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ массив с мСстополоТСниями 0,1,2,3
    Dim arrMarks (ΠΎΡ‚ 0 Π΄ΠΎ 3) Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€

    'Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ 0
    arrMarks (0) = 5

    'УстановитС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ 3
    arrMarks (3) = 46

    'Π­Ρ‚ΠΎ ошибка, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅Ρ‚ мСстополоТСния 4
    arrMarks (4) = 99

ΠšΠΎΠ½Π΅Ρ† подписки
 

Массив с присвоСнными значСниями

НомСр мСстополоТСния называСтся Π½ΠΈΠΆΠ½ΠΈΠΌ индСксом ΠΈΠ»ΠΈ индСксом.ПослСдняя строка Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ «ИндСкс Π²Π½Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°Β», ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ массива Π½Π΅Ρ‚ ячСйки 4.

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ массива VBA

НСт собствСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для получСния количСства элСмСнтов Π² массивС. Π― создал Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ArrayLength Π½ΠΈΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ количСство элСмСнтов Π² любом массивС нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, сколько ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ:

 'https://excelmacromastery.com/
Ѐункция ArrayLength (arr As Variant) Как Π΄ΠΎΠ»Π³ΠΎ

    ΠŸΡ€ΠΈ ошибкС Goto eh
    
    'Π¦ΠΈΠΊΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов.Π¦ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ, ΠΊΠΎΠ³Π΄Π°
    Π’ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка «ИндСкс Π²Π½Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°Β», Ρ‚. Π•. Π‘ΠΎΠ»ΡŒΡˆΠ΅ Π½Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ.
    Dim i As Long, Π΄Π»ΠΈΠ½Π° As Long
    Π΄Π»ΠΈΠ½Π° = 1
    
    'Π¦ΠΈΠΊΠ», ΠΏΠΎΠΊΠ° большС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ
    Π”Π΅Π»Π°ΠΉ, ΠΏΠΎΠΊΠ° ΠΏΡ€Π°Π²Π΄Π°
        я = я + 1
        'Если Π² массивС Π½Π΅Ρ‚ элСмСнтов, эта строка выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ
        Π”Π»ΠΈΠ½Π° = Π”Π»ΠΈΠ½Π° * (UBound (arr, i) - LBound (arr, i) + 1)
        'УстановитС здСсь ArrayLength, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ 1 для пустого массива
        ArrayLength = Π”Π»ΠΈΠ½Π°
    ΠŸΠ΅Ρ‚Π»Ρ

Π‘Π΄Π΅Π»Π°Π½Π½Ρ‹ΠΉ:
    Ѐункция Π²Ρ‹Ρ…ΠΎΠ΄Π°
Π°:
    Если Err.Number = 13 Then 'Ошибка нСсоотвСтствия Ρ‚ΠΈΠΏΠ°
        Err.Raise vbObjectError, "ArrayLength" _
            , «АргумСнт, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ArrayLength, Π½Π΅ являСтся массивом».
    ΠšΠΎΠ½Π΅Ρ†, Ссли
ΠšΠΎΠ½Π΅Ρ‡Π½Π°Ρ функция
 

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это Ρ‚Π°ΠΊ:

 'Имя: TEST_ArrayLength
Автор: Пол КСлли, ExcelMacroMastery.com
'ОписаниС: тСстируСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ArrayLength ΠΈ записываСт
'Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² НСмСдлСнноС Окно (Ctrl + G)
Sub TEST_ArrayLength ()
    
    '0 Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²
    Dim arr1 () Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°
    ΠžΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ. ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ ArrayLength (arr1)
    
    '10 Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²
    Dim arr2 (ΠΎΡ‚ 0 Π΄ΠΎ 9) Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°
    Debug.Print ArrayLength (arr2)
    
    '18 Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²
    Dim arr3 (ΠΎΡ‚ 0 Π΄ΠΎ 5, ΠΎΡ‚ 1 Π΄ΠΎ 3) Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°
    Debug.Print ArrayLength (arr3)
    
    'Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ Π±Π°Π·Ρ‹ 0: 144 ΡˆΡ‚.
    Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ Π±Π°Π·Ρ‹ 1:50 ΡˆΡ‚.
    Dim arr4 (1, 5, 5, 0 Π΄ΠΎ 1) Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°
    Debug.Print ArrayLength (arr4)
    
ΠšΠΎΠ½Π΅Ρ† подписки
 

ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ массива ΠΈ раздСлСния

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Array для заполнСния массива списком элСмСнтов.Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ массив ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ‚ΠΈΠΏΠ°. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

 Dim arr1 ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
    arr1 = Массив («АпСльсин», Β«ΠŸΠ΅Ρ€ΡΠΈΠΊΒ», Β«Π“Ρ€ΡƒΡˆΠ°Β»)

    Dim arr2 ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
    arr2 = массив (5, 6, 7, 8, 12)
 

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ arr1 послС использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ массива

Массив, созданный Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ массива, Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ индСкса, Ссли Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Option Base 1 Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части модуля.Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ начнСтся с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ индСкса. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, считаСтся ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ ΠΈΠΌΠ΅Ρ‚ΡŒ ваши фактичСскиС Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΊΠΎΠ΄Π΅. Однако ΠΈΠ½ΠΎΠ³Π΄Π° это ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ быстро ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄.

Ѐункция Split ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для раздСлСния строки Π½Π° массив Π½Π° основС раздСлитСля. Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ — это Ρ‚Π°ΠΊΠΎΠΉ символ, ΠΊΠ°ΠΊ запятая ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π», Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ элСмСнты.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ строку Π½Π° массив ΠΈΠ· Ρ‚Ρ€Π΅Ρ… элСмСнтов:

 Dim s As String
    s = "ΠšΡ€Π°ΡΠ½Ρ‹ΠΉ, ΠΆΠ΅Π»Ρ‚Ρ‹ΠΉ, Π·Π΅Π»Π΅Π½Ρ‹ΠΉ, синий"

    Dim arr () ΠΊΠ°ΠΊ строка
    arr = Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ (s, ",")
 

Массив послС использования Split

Ѐункция раздСлСния ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° с раздСлитСлями-запятыми ΠΈΠ»ΠΈ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ источника, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт список элСмСнтов, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ символом.

ИспользованиС Ρ†ΠΈΠΊΠ»ΠΎΠ² с массивом VBA

ИспользованиС Ρ†ΠΈΠΊΠ»Π° For Loop обСспСчиваСт быстрый доступ ΠΊΠΎ всСм элСмСнтам Π² массивС. Π’ΠΎΡ‚ Π³Π΄Π΅ становится ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠΉ ΠΌΠΎΡ‰ΡŒ использования массивов. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ массивы с Π΄Π΅ΡΡΡ‚ΡŒΡŽ значСниями ΠΈΠ»ΠΈ Π΄Π΅ΡΡΡ‚ΡŒΡŽ тысячами Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Π΅ ΠΆΠ΅ нСсколько строк ΠΊΠΎΠ΄Π°. Π’ VBA Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: LBound ΠΈ UBound. Π­Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ наимСньший ΠΈ наибольший индСкс Π² массивС. Π’ массивС arrMarks (ΠΎΡ‚ 0 Π΄ΠΎ 3) LBound Π²Π΅Ρ€Π½Π΅Ρ‚ 0, Π° UBound Π²Π΅Ρ€Π½Π΅Ρ‚ 3.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ случайныС числа ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ массиву с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π°.Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ распСчатываСт эти числа, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ†ΠΈΠΊΠ».

 'https://excelmacromastery.com/
ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Π°Ρ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ArrayLoops ()

    'ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ массив
    Dim arrMarks (ΠΎΡ‚ 0 Π΄ΠΎ 5) Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°

    'ЗаполняСм массив случайными числами
    Вусклый я Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°
    Для i = LBound (arrMarks) To UBound (arrMarks)
        arrMarks (i) = 5 * Rnd
    Π”Π°Π»Π΅Π΅ я

    'Π Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ значСния Π² массивС
    Debug.Print Β«ΠœΠ΅ΡΡ‚ΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Β», Β«Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β»
    Для i = LBound (arrMarks) To UBound (arrMarks)
        ΠžΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ.ВывСсти i, arrMarks (i)
    Π”Π°Π»Π΅Π΅ я

ΠšΠΎΠ½Π΅Ρ† подписки
 

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ LBound ΠΈ UBound ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹. Π˜Ρ… использованиС ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ наши Ρ†ΠΈΠΊΠ»Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с любой Π΄Π»ΠΈΠ½ΠΎΠΉ массива. РСальноС прСимущСство состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄Π»ΠΈΠ½Ρ‹ массива Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π¦ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ для массива любой Π΄Π»ΠΈΠ½Ρ‹, ΠΏΠΎΠΊΠ° Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ИспользованиС Ρ†ΠΈΠΊΠ»Π° For Each с массивом VBA

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» For Each с массивами.Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² массивС.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ mark измСняСтся, Π½ΠΎ Π½Π΅ мСняСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² массивС.

 Π—Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΡƒ Π² arrMarks
        'НС ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ массива
        mark = 5 * Rnd
    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠ°
 

Π¦ΠΈΠΊΠ» For Each ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для чтСния массива. Как ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива.

 Вусклая ΠΌΠ΅Ρ‚ΠΊΠ° ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
    Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ Π² arrMarks
        ΠžΡ‚Π»Π°Π΄ΠΊΠ°. ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ
    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠ°
 

ИспользованиС стирания с массивом VBA

Ѐункция Erase ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ с массивами, Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° массива.

Для статичСского массива функция Erase сбрасываСт всС значСния Π½Π° значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Если массив состоит ΠΈΠ· Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… чисСл (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΈΠΏΠ° Long), Ρ‚ΠΎΠ³Π΄Π° всС значСния ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π° ноль. Если массив состоит ΠΈΠ· строк, Ρ‚ΠΎΠ³Π΄Π° для всСх строк устанавливаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ «» ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Для динамичСского массива функция стирания освобоТдаСт ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π’ΠΎ Π΅ΡΡ‚ΡŒ удаляСт массив. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ снова, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ReDim для выдСлСния памяти.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ статичСского массива. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ ArrayLoops Π² послСднСм Ρ€Π°Π·Π΄Π΅Π»Π΅ с ΠΎΠ΄Π½ΠΈΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ — ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Erase послС установки Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Когда Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ распСчатано, всС ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ:

 'https://excelmacromastery.com/
ΠžΠ±Ρ‰Π΅Π΄ΠΎΡΡ‚ΡƒΠΏΠ½Π°Ρ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° EraseStatic ()

    'ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ массив
    Dim arrMarks (ΠΎΡ‚ 0 Π΄ΠΎ 3) Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€

    'ЗаполняСм массив случайными числами
    Вусклый я Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°
    Для i = LBound (arrMarks) To UBound (arrMarks)
        arrMarks (i) = 5 * Rnd
    Π”Π°Π»Π΅Π΅ я

    'Π’Π‘Π• Π—ΠΠΠ§Π•ΠΠ˜Π― Π£Π‘Π’ΠΠΠžΠ’Π›Π•ΠΠ« НА НУЛЬ
    Π‘Ρ‚Π΅Ρ€Π΅Ρ‚ΡŒ arrMarks

    'РаспСчатайтС значСния - Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ всС Π½ΡƒΠ»Π΅Π²Ρ‹Π΅
    ΠžΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ.ВывСсти Β«ΠœΠ΅ΡΡ‚ΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Β», Β«Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β»
    Для i = LBound (arrMarks) To UBound (arrMarks)
        Debug.Print i, arrMarks (i)
    Π”Π°Π»Π΅Π΅ я

ΠšΠΎΠ½Π΅Ρ† подписки
 

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠΎΠΌ. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ использовали Erase, всС мСста Π² массивС Π±Ρ‹Π»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹. Нам Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ReDim, Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ снова ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массив.

Если ΠΌΡ‹ попытаСмся ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ элСмСнтам этого массива, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ «ИндСкс Π²Π½Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°Β» ошибка:

 'https: // excelmacromastery. com /
ΠžΠ±Ρ‰Π΅Π΄ΠΎΡΡ‚ΡƒΠΏΠ½Π°Ρ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° EraseDynamic ()

    'ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ массив
    Dim arrMarks () Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°
    ReDim arrMarks (ΠΎΡ‚ 0 Π΄ΠΎ 3)

    'ЗаполняСм массив случайными числами
    Вусклый я Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°
    Для i = LBound (arrMarks) To UBound (arrMarks)
        arrMarks (i) = 5 * Rnd
    Π”Π°Π»Π΅Π΅ я

    'arrMarks Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ освобоТдСн. НСт мСстополоТСний.
    Π‘Ρ‚Π΅Ρ€Π΅Ρ‚ΡŒ arrMarks

ΠšΠΎΠ½Π΅Ρ† подписки
 

Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ массива VBA

Если ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ReDim Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ массивС, Ρ‚ΠΎ массив ΠΈ Π΅Π³ΠΎ содСрТимоС Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ReDim создаст ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π½ΠΎΠ²Ρ‹ΠΉ массив. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ массив ΠΈ Π΅Π³ΠΎ содСрТимоС Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹.

 'https://excelmacromastery.com/
Sub UsingRedim ()

    Dim arr () ΠΊΠ°ΠΊ строка
    
    'Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ массив Π² слоты ΠΎΡ‚ 0 Π΄ΠΎ 2
    ReDim arr (ΠΎΡ‚ 0 Π΄ΠΎ 2)
    arr (0) = "Π―Π±Π»ΠΎΠΊΠΎ"
    
    'Массив с яблоком Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠ΄Π°Π»Π΅Π½
    ReDim arr (ΠΎΡ‚ 0 Π΄ΠΎ 3)

ΠšΠΎΠ½Π΅Ρ† подписки
 

Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ массива Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ содСрТимого, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Preserve .

Когда ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Redim Preserve , Π½ΠΎΠ²Ρ‹ΠΉ массив Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ измСрСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

ΠœΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΡ‚ (0 Π΄ΠΎ 2) Π΄ΠΎ (ΠΎΡ‚ 1 Π΄ΠΎ 3) ΠΈΠ»ΠΈ Π΄ΠΎ (ΠΎΡ‚ 2 Π΄ΠΎ 10), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это Ρ€Π°Π·Π½Ρ‹Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ создаСм массив, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ReDim , Π° Π·Π°Ρ‚Π΅ΠΌ заполняСм массив Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Ρ„Ρ€ΡƒΠΊΡ‚ΠΎΠ².

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Preserve , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ массива, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ исходноС содСрТимоС:

 'https: // excelmacromastery.com /
Sub UsingRedimPreserve ()

    Dim arr () ΠΊΠ°ΠΊ строка
    
    'Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ массив Π² слоты ΠΎΡ‚ 0 Π΄ΠΎ 1
    ReDim arr (ΠΎΡ‚ 0 Π΄ΠΎ 2)
    arr (0) = "Π―Π±Π»ΠΎΠΊΠΎ"
    arr (1) = "АпСльсин"
    arr (2) = "Π“Ρ€ΡƒΡˆΠ°"
    
    'Π‘Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ исходноС содСрТимоС
    ReDim Preserve arr (ΠΎΡ‚ 0 Π΄ΠΎ 5)

ΠšΠΎΠ½Π΅Ρ† подписки
 

На ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π°Ρ… Π½ΠΈΠΆΠ΅ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ исходноС содСрТимоС массива Π±Ρ‹Π»ΠΎ «сохранСно».

ΠŸΠ΅Ρ€Π΅Π΄ ReDim Preserve

ПослС ReDim Preserve

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива, ΠΊΠ°ΠΊ ΠΌΡ‹ Π΄Π΅Π»Π°Π»ΠΈ Π² этом Ρ€Π°Π·Π΄Π΅Π»Π΅.Если Π²Ρ‹ измСняСтС Ρ€Π°Π·ΠΌΠ΅Ρ€ массива нСсколько Ρ€Π°Π·, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Collection.

ИспользованиС сохранСния с Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами

Preserve Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π΅ΠΉ массива.

НапримСр, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

 'https://excelmacromastery.com/
Sub Preserve2D ()

    Dim arr () Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°
    
    'Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ
    ReDim arr (ΠΎΡ‚ 1 Π΄ΠΎ 2, ΠΎΡ‚ 1 Π΄ΠΎ 5)
    
    'Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π΄Π»ΠΈΠ½Ρƒ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ измСрСния
    ReDim Preserve arr (ΠΎΡ‚ 1 Π΄ΠΎ 2, ΠΎΡ‚ 1 Π΄ΠΎ 10)

ΠšΠΎΠ½Π΅Ρ† подписки
 

Если ΠΌΡ‹ попытаСмся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Preserve для Π½ΠΈΠΆΠ½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ «НиТний индСкс Π²Π½Π΅ допустимого Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°Β».

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Preserve для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ измСрСния. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ этого ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС «НиТний индСкс Π²Π½Π΅ допустимого Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°Β»:

.

 'https://excelmacromastery.com/
Sub Preserve2DError ()

    Dim arr () Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°
    
    'Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ
    ReDim arr (ΠΎΡ‚ 1 Π΄ΠΎ 2, ΠΎΡ‚ 1 Π΄ΠΎ 5)
    
    Ошибка "ИндСкс Π²Π½Π΅ допустимого Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°"
    ReDim Preserve arr (ΠΎΡ‚ 1 Π΄ΠΎ 5, ΠΎΡ‚ 1 Π΄ΠΎ 5)

ΠšΠΎΠ½Π΅Ρ† подписки
 

Когда ΠΌΡ‹ Ρ‡ΠΈΡ‚Π°Π΅ΠΌ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π² массив, ΠΎΠ½ автоматичСски создаСт Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив, Π΄Π°ΠΆΠ΅ Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ столбСц.

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚Π΅ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° сохранСния. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Preserve Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

 'https://excelmacromastery.com/
Sub Preserve2DRange ()

    Dim arr ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
    
    'ΠŸΡ€ΠΈΡΠ²ΠΎΠΉΡ‚Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ массиву
    arr = Sheet1.Range ("A1: A5"). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
    
    'Preserve Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π΅ΠΉ
    ReDim Preserve arr (ΠΎΡ‚ 1 Π΄ΠΎ 5, ΠΎΡ‚ 1 Π΄ΠΎ 7)

ΠšΠΎΠ½Π΅Ρ† подписки
 

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° массива VBA

Π’ VBA Π½Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для сортировки массива. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ячСйки листа, Π½ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ, Ссли Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ½ΠΎΠ³ΠΎ.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Π½ΠΈΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ QuickSort ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для сортировки массива.

 'https://excelmacromastery.com/
Sub QuickSort (arr As Variant, first as long, last as long)
  
  Dim vCentreVal ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, vTemp ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
  
  Dim lTempLow As Long
  Dim lTempHi As Long
  lTempLow = ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ
  lTempHi = послСдний
  
  vCentreVal = arr ((ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ + послСдний) \ 2)
  Π”Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠΊΠ° lTempLow <= lTempHi
  
    Do While arr (lTempLow)  сначала
      lTempHi = lTempHi - 1
    ΠŸΠ΅Ρ‚Π»Ρ
    
    Если lTempLow <= lTempHi Π’ΠΎΠ³Π΄Π°
    
        'ΠŸΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ мСстами значСния
        vTemp = arr (lTempLow)

        arr (lTempLow) = arr (lTempHi)
        arr (lTempHi) = vTemp
      
        'ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ позициям
        lTempLow = lTempLow + 1
        lTempHi = lTempHi - 1
      
    ΠšΠΎΠ½Π΅Ρ†, Ссли
    
  ΠŸΠ΅Ρ‚Π»Ρ
  
  Если first 

Π­Ρ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

 'https: // excelmacromastery.com /
Sub TestSort ()

    'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ массив
    Dim arr () ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
    arr = Array (Β«Π‘Π°Π½Π°Π½Β», «Дыня», Β«ΠŸΠ΅Ρ€ΡΠΈΠΊΒ», Β«Π‘Π»ΠΈΠ²Π°Β», Β«Π―Π±Π»ΠΎΠΊΠΎΒ»)
  
    'Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив
    QuickSort ΠΎΠ±Ρ€., LBound (ΠΎΠ±Ρ€.), UBound (ΠΎΠ±Ρ€.)

    'Π Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ arr Π² Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ (Ctrl + G)
    Вусклый я Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°
    Для i = LBound (arr) To UBound (arr)
        ΠžΡ‚Π»Π°Π΄ΠΊΠ°.ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ arr (i)
    Π”Π°Π»Π΅Π΅ я

ΠšΠΎΠ½Π΅Ρ† подписки
 

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° массива VBA Π² Sub

Иногда Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ массив Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ.Π’Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ динамичСский массив.

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ с использованиСм ByRef ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ ссылку Π½Π° массив. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π²Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ массив Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π²Π΅Ρ€Π½Π΅Ρ‚Π΅ΡΡŒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Когда Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ массив Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ByVal, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ByRef. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ массив с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ByVal, сдСлав ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ.

 'https://excelmacromastery.com/
'ΠŸΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ массив Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Sub PassToProc ()
    Dim arr (ΠΎΡ‚ 0 Π΄ΠΎ 5) ΠΊΠ°ΠΊ строка
    'ΠŸΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ массив Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ
    UseArray arr
ΠšΠΎΠ½Π΅Ρ† подписки

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Π°Ρ функция UseArray (ByRef arr () As String)
    'Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массив
    ΠžΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ.Π Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ UBound (ΠΎΠ±Ρ€.)
ΠšΠΎΠ½Π΅Ρ‡Π½Π°Ρ функция
 

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ массива VBA ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ массив Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ByRef (см. ПослСдний Ρ€Π°Π·Π΄Π΅Π»). Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ массив ΠΈΠ· ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹.

Основная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° массива - это ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ. Π’ этом случаС Π²Ρ‹ Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ массив массиву Π² Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.Π­Ρ‚ΠΎΡ‚ массив Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΆΠ΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ динамичСский массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π±Ρ‹Π» Π²Ρ‹Π΄Π΅Π»Π΅Π½.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ это

 'https://excelmacromastery.com/
Public Sub TestArray ()

    'ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ динамичСский массив - Π½Π΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½
    Dim arr () ΠΊΠ°ΠΊ строка
    'Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ массив
    arr = GetArray

ΠšΠΎΠ½Π΅Ρ† подписки

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Π°Ρ функция GetArray () As String ()

    'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ массив
    Dim arr (ΠΎΡ‚ 0 Π΄ΠΎ 5) ΠΊΠ°ΠΊ строка
    'Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ массив
    GetArray = arr

ΠšΠΎΠ½Π΅Ρ‡Π½Π°Ρ функция
 

ИспользованиС Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива VBA

ΠœΠ°ΡΡΠΈΠ²Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ рассматривали Π΄ΠΎ сих ΠΏΠΎΡ€, Π±Ρ‹Π»ΠΈ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами.Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ массивы ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΎΠ΄ΠΈΠ½ список элСмСнтов.

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив - это, ΠΏΠΎ сути, список списков. Если Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΉ строкС элСктронной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΊΠ°ΠΊ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΈ, Ρ‚ΠΎΠ³Π΄Π° Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ столбца Π±ΡƒΠ΄ΡƒΡ‚ Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ. ЀактичСски элСктронная Ρ‚Π°Π±Π»ΠΈΡ†Π° - это эквивалСнт Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива. Он ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° измСрСния - строки ΠΈ столбцы.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π²Π΅Ρ‰ΡŒ: Excel ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΊΠ°ΠΊ строку, Ссли Π²Ρ‹ записываСтС Π΅Π³ΠΎ Π² ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, массив arr (ΠΎΡ‚ 1 Π΄ΠΎ 5) эквивалСнтСн arr (ΠΎΡ‚ 1 Π΄ΠΎ 1, 1 Π΄ΠΎ 5) ΠΏΡ€ΠΈ записи Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ.

На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π΄Π²Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ - ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ, Π²Ρ‚ΠΎΡ€ΠΎΠΉ - Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ.

Для доступа ΠΊ элСмСнту Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… (ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌ) всС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ строку, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€. 1,2, 3 ΠΈΠ»ΠΈ 4.

Для Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… (Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ) Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ строку И столбСц. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌ ΠΊΠ°ΠΊ ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… столбцах ΠΈ ΠΎΠ΄Π½ΠΎΠΉ строкС, Π° ΠΎ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΌ - ΠΊΠ°ΠΊ ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строках ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… столбцах.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π’ массивС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π΄Π²ΡƒΡ… ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ трСбуСтся Ρ€Π΅Π΄ΠΊΠΎ. Если Π²Ρ‹ Ρ€Π΅ΡˆΠ°Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива, вСроятно, Π΅ΡΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠΈΠΉ способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это.

Π’Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

 Dim ArrayMarks (ΠΎΡ‚ 0 Π΄ΠΎ 2,0 Π΄ΠΎ 3) ΠΏΠΎ всСй Π΄Π»ΠΈΠ½Π΅
 

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ создаСтся случайноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π² массивС, ΠΈ эти значСния выводятся Π² ΠΎΠΊΠ½ΠΎ Immediate Window:

 'https: // excelmacromastery.com /
Public Sub TwoDimArray ()

    'ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив
    Dim arrMarks (ΠΎΡ‚ 0 Π΄ΠΎ 3, ΠΎΡ‚ 0 Π΄ΠΎ 2) ΠΊΠ°ΠΊ строка

    'Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ массив тСкстом, состоящим ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ i ΠΈ j
    Dim i Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, j Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€
    Для i = LBound (arrMarks) To UBound (arrMarks)
        Для j = LBound (arrMarks, 2) To UBound (arrMarks, 2)
            arrMarks (i, j) = CStr (i) & ":" & CStr (j)
        Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ j
    Π”Π°Π»Π΅Π΅ я

    'Π Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ значСния Π² массивС Π² Immediate Window
    ΠžΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ.Π’Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ Β«iΒ», Β«jΒ», Β«ValueΒ»
    Для i = LBound (arrMarks) To UBound (arrMarks)
        Для j = LBound (arrMarks, 2) To UBound (arrMarks, 2)
            ΠžΡ‚Π»Π°Π΄ΠΊΠ°.  ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ i, j, arrMarks (i, j)
        Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ j
    Π”Π°Π»Π΅Π΅ я

ΠšΠΎΠ½Π΅Ρ† подписки
 

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ†ΠΈΠΊΠ» For Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° для доступа ΠΊΠΎ всСм элСмСнтам.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° выглядит Ρ‚Π°ΠΊ:

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ этот макрос:

  • Π’Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ†ΠΈΠΊΠ» i
  • i установлСн Π½Π° 0
  • Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² j ΠΏΠ΅Ρ‚Π»ΡŽ
  • j устанавливаСтся Π½Π° 0
  • j устанавливаСтся Π½Π° 1
  • j установлСно Π½Π° 2
  • Π’Ρ‹Ρ…ΠΎΠ΄ j пСтля
  • i установлСн Π½Π° 1
  • j устанавливаСтся Π½Π° 0
  • j устанавливаСтся Π½Π° 1
  • j установлСно Π½Π° 2
  • И Ρ‚Π°ΠΊ Π΄ΠΎ i = 3 ΠΈ j = 2

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ LBound ΠΈ UBound ΠΈΠΌΠ΅ΡŽΡ‚ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 2 .Π­Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ это вСрхняя ΠΈΠ»ΠΈ ниТняя Π³Ρ€Π°Π½ΠΈΡ†Π° Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ измСрСния. Π­Ρ‚ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ мСстополоТСниС для j . Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 1, поэтому Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для Ρ†ΠΈΠΊΠ»Π° ΠΈ .

ИспользованиС Ρ†ΠΈΠΊΠ»Π° For Each

ИспользованиС For Each ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ ΠΈΠ· массива.

Π”Π°Π²Π°ΠΉΡ‚Π΅ возьмСм ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ записываСт Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив

 'Для использования Ρ†ΠΈΠΊΠ»Π° For трСбуСтся Π΄Π²Π° Ρ†ΠΈΠΊΠ»Π°
    ΠžΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ.Π’Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ Β«iΒ», Β«jΒ», Β«ValueΒ»
    Для i = LBound (arrMarks) To UBound (arrMarks)
        Для j = LBound (arrMarks, 2) To UBound (arrMarks, 2)
            ΠžΡ‚Π»Π°Π΄ΠΊΠ°. ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ i, j, arrMarks (i, j)
        Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ j
    Π”Π°Π»Π΅Π΅ я
 

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ Π΅Π³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» For each. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ†ΠΈΠΊΠ», поэтому ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅:

 'Для использования For Each трСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ†ΠΈΠΊΠ»
    Debug. Print Β«Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β»
    Вусклый Π·Π½Π°ΠΊ ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
    Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ Π² arrMarks
        ΠžΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ.ΠžΡ‚ΠΌΠ΅Ρ‚ΠΊΠ° для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ
    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠ°
 

ИспользованиС Ρ†ΠΈΠΊΠ»Π° For Each Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ массив Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ порядкС - ΠΎΡ‚ LBound Π΄ΠΎ UBound. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв это всС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ.

Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π² массив VBA

Если Π²Ρ‹ Ρ‡ΠΈΡ‚Π°Π»ΠΈ ΠΌΠΎΠΉ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ пост ΠΎ ячСйках ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°Ρ…, Ρ‚ΠΎ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ VBA ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ эффСктивный способ чтСния ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ячССк Π² массив ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

 'https://excelmacromastery.com/
ΠžΠ±Ρ‰Π΅Π΄ΠΎΡΡ‚ΡƒΠΏΠ½Π°Ρ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ReadToArray ()

    'ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ динамичСский массив
    Dim StudentMarks ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚

    'Π‘Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ значСния Π² массив ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки
    StudentMarks = Range ("A1: Z1").Π¦Π΅Π½ΠΈΡ‚ΡŒ

    'Π—Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ значСния ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ строку
    Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("A3: Z3"). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = StudentMarks

ΠšΠΎΠ½Π΅Ρ† подписки
 

ДинамичСский массив, созданный Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· всСго Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ячССк Π² массив всСго Π·Π° ΠΎΠ΄Π½Ρƒ строку.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ± учащихся Π½ΠΈΠΆΠ΅ ΠΈΠ· C3: E6 Листа 1 ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ Π² ΠΎΠΊΠ½Π΅ Immediate Window:

.

 'https://excelmacromastery.com/
ΠžΠ±Ρ‰Π΅Π΄ΠΎΡΡ‚ΡƒΠΏΠ½Π°Ρ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ReadAndDisplay ()

    'ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½
    Dim rg As Range
    УстановитС rg = ThisWorkbook.Листы («Лист1Β»). Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ (Β«C3: E6Β»)

    'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ динамичСский массив
    Dim StudentMarks ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚

    'Π‘Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ значСния Π² массив ΠΈΠ· листа1
    StudentMarks = rg.Value

    'Π Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ значСния массива
    Debug.Print Β«iΒ», Β«jΒ», Β«ValueΒ»
    Dim i Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, j Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€
    Для i = LBound (StudentMarks) To UBound (StudentMarks)
        Для j = LBound (StudentMarks, 2) To UBound (StudentMarks, 2)
            ΠžΡ‚Π»Π°Π΄ΠΊΠ°: ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ i, j, StudentMarks (i, j)
        Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ j
    Π”Π°Π»Π΅Π΅ я

ΠšΠΎΠ½Π΅Ρ† подписки
 

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… учащихся

Π’Ρ‹Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ (доступноС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ i ) массива - это строка, Π° Π²Ρ‚ΠΎΡ€ΠΎΠ΅ - столбСц. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это, взглянитС Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 44 Π² E4 Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ находится Π² строкС 2 столбца 3 Π½Π°ΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ 44 хранится Π² массивС ΠΏΠΎ адрСсу StudentMarks (2,3) .

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± использовании массивов с Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΈΠ· этого Π²ΠΈΠ΄Π΅ΠΎ Π½Π° YouTube.

Как Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ваши макросы Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со свСрхвысокой ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ

Если ваши макросы Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, этот Ρ€Π°Π·Π΄Π΅Π» ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ для вас ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ. ОсобСнно, Ссли Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Π΄Π΅Π»ΠΎ с большими объСмами Π΄Π°Π½Π½Ρ‹Ρ….Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ - ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹ΠΉ сСкрСт Π² VBA

.

ОбновлСниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² массивах происходит ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ быстрСС, Ρ‡Π΅ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ячСйках.

Π’ послСднСм Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Ρ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏΡ‹ ячССк Π² массив ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Если ΠΌΡ‹ обновляСм ΠΌΠ½ΠΎΠ³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

1. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ячССк Π² массив.
2. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² массивС.
3. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· массива ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² ячСйки.

НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС, Ρ‡Π΅ΠΌ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ Π½ΠΈΠΌ:

 'https://excelmacromastery.com/
ΠžΠ±Ρ‰Π΅Π΄ΠΎΡΡ‚ΡƒΠΏΠ½Π°Ρ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ReadToArray ()

    'Π‘Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ значСния Π² массив ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки
    Dim StudentMarks ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
    StudentMarks = Range ("A1: Z20000"). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

    Вусклый я Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°
    Для i = LBound (StudentMarks) To UBound (StudentMarks)
        'ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ здСсь
        StudentMarks (i, 1) = StudentMarks (i, 1) * 2
        '...
    Π”Π°Π»Π΅Π΅ я

    'Π—Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π½ΠΎΠ²Ρ‹Π΅ значСния ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ лист
    Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("A1: Z20000"). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = StudentMarks

ΠšΠΎΠ½Π΅Ρ† подписки
 

 'https://excelmacromastery.com/
Sub UsingCellsToUpdate ()
    
    Dim c ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
    Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ c Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ("A1: Z20000")
        c.Value = 'ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ значСния здСсь
    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ c
    
ΠšΠΎΠ½Π΅Ρ† подписки
 

НазначСниС ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° ячССк Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ использовании копирования ΠΈ вставки:

 'НазначСниС - это быстрСС
Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("A1: A10"). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("B1: B10"). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

'ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ - это ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅
Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("B1: B1"). ΠœΠ΅ΡΡ‚ΠΎ назначСния копирования: = Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("A1: A10")
 

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΎΡ‚ Π΄Π²ΡƒΡ… Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ использовали массивы для ускорСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ своих макросов

«НСсколько ΠΌΠΎΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»ΠΈΡΡŒ ΠΈΠ· ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΈ Π΄ΠΎΠ»Π³ΠΈΡ… Π² слишком простыС, Π° врСмя выполнСния ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΠ»ΠΎΡΡŒ с 10: 1Β». - Π΄Π°Ρ‚Ρ‡Π°Π½ΠΈΠ½

«Один ΠΎΡ‚Ρ‡Π΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я написал, занял ΠΏΠΎΡ‡Ρ‚ΠΈ 3 часа ΠΏΡ€ΠΈ прямом доступС ΠΊ ячСйкам - 5 ΠΌΠΈΠ½ΡƒΡ‚ с массивами» - Π”ΠΆΠΈΠΌ

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ большС ΠΎ скорости массивов ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π² этом Π²ΠΈΠ΄Π΅ΠΎ Π½Π° YouTube.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ сравнСниС ΠΌΠ΅ΠΆΠ΄Ρƒ Find, Match ΠΈ Arrays, стоит ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ этот пост Π§Π°Ρ€Π»ΡŒΠ·Π° Уильямса.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

НиТС приводится ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ основных ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² этого сообщСния

  1. ΠœΠ°ΡΡΠΈΠ²Ρ‹ - это эффСктивный способ хранСния списка элСмСнтов ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.
  2. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ элСмСнту массива Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π½ΠΎΠΌΠ΅Ρ€ мСстополоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ извСстСн ΠΊΠ°ΠΊ индСкс ΠΈΠ»ΠΈ индСкс .
  3. РаспространСнная ошибка «ИндСкс Π²Π½Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Β» Π²Ρ‹Π·Π²Π°Π½Π° доступом ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΌΠ΅ΡΡ‚ΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ.
  4. БущСствуСт Π΄Π²Π° Ρ‚ΠΈΠΏΠ° массивов: БтатичСский ΠΈ ДинамичСский .
  5. БтатичСский ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Π΄Π»ΠΈΠ½Π° массива всСгда ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π°.
  6. ДинамичСскиС массивы ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ массива Π²ΠΎ врСмя выполнСния.
  7. LBound ΠΈ UBound ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ бСзопасный способ поиска Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠΈΡ… ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»ΡŒΡˆΠΈΡ… индСксов массива.
  8. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ массив ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ . Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы.
  9. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ массив Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ByRef . Π’Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ это Ρ‚Π°ΠΊ: ByRef arr () as long.
  10. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ массив ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ массив, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ½ Π½Π°Π·Π½Π°Ρ‡Π΅Π½, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚.
  11. Π Π°Π±ΠΎΡ‡ΠΈΠΉ лист со своими строками ΠΈ столбцами ΠΏΠΎ сути прСдставляСт собой Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив .
  12. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа Π² Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив всСго Π·Π° ΠΎΠ΄Π½Ρƒ строку ΠΊΠΎΠ΄Π°.
  13. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ всСго Π·Π° ΠΎΠ΄Π½Ρƒ строку ΠΊΠΎΠ΄Π°.

Π§Ρ‚ΠΎ дальшС?

БСсплатноС руководство ΠΏΠΎ VBA Если Π²Ρ‹ Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ Π² VBA ΠΈΠ»ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚Ρ‚ΠΎΡ‡ΠΈΡ‚ΡŒ свои ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π½Π°Π²Ρ‹ΠΊΠΈ VBA, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ Π½Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ The Ultimate VBA Tutorial.

БвязанноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅: ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ доступ ΠΊ ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠΌ Π²Π΅Π±ΠΈΠ½Π°Ρ€Π°ΠΌ ΠΏΠΎ Excel VBA.

( ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•: ΠŸΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ созданиС прилоТСния VBA ΠΈΠ»ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠΌ? Π£Π·Π½Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ 10 ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Excel VBA с нуля.)

массивов VBA - Excel Π²Π½Π΅ сСти

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ я Π½Π°Ρ‡Π½Ρƒ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ ΠΌΠ½Π΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с Π²Π°ΠΌΠΈ нСбольшим сСкрСтом… МнС ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ нравятся массивы VBA.ΠŸΡ€ΠΎΡΡ‚ΠΎ каТСтся, Ρ‡Ρ‚ΠΎ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, слишком ΠΌΠ½ΠΎΠ³ΠΎ странностСй. По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками программирования, VBA Π΄Π΅Π»Π°Π΅Ρ‚ массивы слишком слоТными. Если Π²Ρ‹ чувствуСтС Ρ‚ΠΎ ΠΆΠ΅ самоС, Π·Π½Π°Ρ‡ΠΈΡ‚, Π²Ρ‹ ΠΏΠΎΠΏΠ°Π»ΠΈ Π² Π½ΡƒΠΆΠ½ΠΎΠ΅ мСсто. Π­Ρ‚ΠΎΡ‚ пост содСрТит мноТСство ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π²Π°ΡˆΠΈΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² использования.

Бпасибо Π”ΠΆΠΎΠ½Ρƒ ΠŸΠ΅Π»ΡŒΡ‚ΡŒΠ΅ Π·Π° ​​прСдлоТСниС, ΠΊΠ°ΠΊ я ΠΌΠΎΠ³Ρƒ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ этот пост.

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°

Π― Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π²Π°ΠΌ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° для этого поста. Π’ΠΎΠ³Π΄Π° Π²Ρ‹ смоТСтС Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π² дСйствии, Π° Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½ для дальнСйшСго использования.

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»: 0017 VBA Arrays.zip

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ массив ΠΈ ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?

Массив - это список ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. НапримСр, список Π½Π°Π·Π²Π°Π½ΠΈΠΉ поставщиков ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ массивом.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ нас Π΅ΡΡ‚ΡŒ список ΠΈΠ· 5 поставщиков, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ мСсяц. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° снимок экрана Π½ΠΈΠΆΠ΅ Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ список поставщиков, ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ 5 ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ значСния ΠΈΠ· Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΊΠΎΠ΄:

 Sub ListSuppliers ()

'Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅
Вусклый поставщик1 ΠΊΠ°ΠΊ строка
Вусклый поставщик2 ΠΊΠ°ΠΊ строка
Вусклый поставщик3 ΠΊΠ°ΠΊ строка
Вусклый поставщик4 Π² Π²ΠΈΠ΄Π΅ строки
Вусклый поставщик5 ΠΊΠ°ΠΊ строка

'ΠŸΡ€ΠΈΡΠ²ΠΎΠΉΡ‚Π΅ значСния поставщикам
ΠŸΠΎΡΡ‚Π°Π²Ρ‰ΠΈΠΊ1 = ActiveSheet.Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("A2"). Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ (0, 0). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅2
Supplier2 = ActiveSheet.Range ("A2"). Offset (1, 0) .Value2
Supplier3 = ActiveSheet.Range ("A2"). Offset (2, 0) .Value2
Supplier4 = ActiveSheet.Range ("A2"). Offset (3, 0) .Value2
Supplier5 = ActiveSheet.Range ("A2"). Offset (4, 0) .Value2

ΠšΠΎΠ½Π΅Ρ† Sub 

Π­Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ ΠΏΠ»ΠΎΡ…ΠΎ, ΠΏΡ€Π°Π²Π΄Π°? Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ 1000 поставщиков ΠΈΠ»ΠΈ 10 000 поставщиков; это Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ скучный дСнь программирования. Если, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΡ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ массив.

А Ρ‡Ρ‚ΠΎ, Ссли Ρƒ нас нСизвСстноС количСство поставщиков.Π§Ρ‚ΠΎ ΠΌΡ‹ собираСмся Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΌ? Нам потрСбуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ большС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ, просто для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ достаточно мСста. Π‘Π½ΠΎΠ²Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ массиву VBA.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° ΠΊΠΎΠ΄ Π½ΠΈΠΆΠ΅; ΠΎΠ½ создаСт массив для хранСния 10 000 поставщиков, заполняСмый ΠΈΠ· 10 000 ячССк Π² столбцС A. На Π΄Π°Π½Π½ΠΎΠΌ этапС Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ это; вмСсто этого просто Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»ΡΠΉΡ‚Π΅ΡΡŒ Ρ‚Π΅ΠΌ, насколько ΠΎΠ½ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΈ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹ΠΉ. Π’Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ массив VBA, содСрТащий список ΠΈΠ· 10 000 элСмСнтов, Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ мСньшС ΠΊΠΎΠ΄Π°, Ρ‡Π΅ΠΌ список ΠΈΠ· пяти ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

 Sub ListSuppliersArray ()

ΠŸΠΎΡΡ‚Π°Π²Ρ‰ΠΈΠΊΠΈ тусклых ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (ΠΎΡ‚ 1 Π΄ΠΎ 10000) Π² Π²ΠΈΠ΄Π΅ строки
Вусклый я Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°

Для i = LBound (ΠŸΠΎΡΡ‚Π°Π²Ρ‰ΠΈΠΊΠΈ) To UBound (ΠŸΠΎΡΡ‚Π°Π²Ρ‰ΠΈΠΊΠΈ)

    ΠŸΠΎΡΡ‚Π°Π²Ρ‰ΠΈΠΊΠΈ (i) = ActiveSheet.Range ("A2"). Offset (i - 1, 0) .Value2

Π”Π°Π»Π΅Π΅ я

End Sub 

ΠŸΡ€ΠΈ использовании VBA Π²Ρ‹ΡˆΠ΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния, Π΅ΡΡ‚ΡŒ Π»ΠΈ 1, 20, 50, 1000 ΠΈΠ»ΠΈ 10 000 элСмСнтов, ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠΉ ΠΆΠ΅ Π΄Π»ΠΈΠ½Ρ‹. Π’ этом прСимущСство массивов; Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄ снова ΠΈ снова. ВмСсто этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ всС элСмСнты Π² массив.

Но это Π΅Ρ‰Π΅ Π½Π΅ всС. Если присваиваСмыС значСния находятся Π² Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строк. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° макрос Π½ΠΈΠΆΠ΅; Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΈΠ· 10 000 ячССк назначаСтся Ρ‚ΠΈΠΏΡƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Variant, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ автоматичСски создаСт массив ΠΈΠ· 10 000 элСмСнтов (Ρ†ΠΈΠΊΠ» Π½Π΅ трСбуСтся). Π£Π΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, ΠΏΡ€Π°Π²Π΄Π°?

 Sub ListSuppliersArray ()

ΠŸΠΎΡΡ‚Π°Π²Ρ‰ΠΈΠΊΠΈ тусклого свСта Π² качСствС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°

ΠŸΠΎΡΡ‚Π°Π²Ρ‰ΠΈΠΊΠΈ = ActiveSheet.Range ("A2: A10001"). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅2

End Sub 

Π₯ΠΎΡ€ΠΎΡˆΠΎ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ прСимущСства массивов VBA, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΡƒΠ·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

БтатичСскиС ΠΈ динамичСскиС массивы

ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π±Ρ‹Π²Π°ΡŽΡ‚ Π΄Π²ΡƒΡ… Π²ΠΈΠ΄ΠΎΠ²:

  • БтатичСский - массив с фиксированным числом элСмСнтов
  • ДинамичСский - массив, количСство элСмСнтов ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ опрСдСляСтся ΠΏΡ€ΠΈ запускС макроса.

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ созданы. ПослС этого доступ ΠΊ значСниям, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ элСмСнтам ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ дСйствия Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅.

ОбъявлСниС массива ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΎΠ΄Π½ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ.ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ объявлСнии массива скобки часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ послС ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ

 'ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ строку ΠΊΠ°ΠΊ ΠΎΠ΄Π½Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ
Dim myVariable As String 

ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ массива

 'ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ строку ΠΊΠ°ΠΊ массив
Dim myArray (ΠΎΡ‚ 1 Π΄ΠΎ 5) As String 

ΠœΠ°ΡΡΠΈΠ²Ρ‹, ΠΊΠ°ΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ любого Ρ‚ΠΈΠΏΠ°. Π¦Π΅Π»Ρ‹Π΅ числа, строки, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ ΠΈ Ρ‚. Π”. ΠœΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² массив.

ИспользованиС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° ΠΊΠ°ΠΊ массива

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, объявлСнная ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ любого Ρ‚ΠΈΠΏΠ°. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ Variant Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ массивом, Ссли ΠΌΡ‹ Π½Π°Π·Π½Π°Ρ‡ΠΈΠΌ Π΅ΠΌΡƒ массив.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° ΠΊΠΎΠ΄ Π½ΠΈΠΆΠ΅. Π‘Π½Π°Ρ‡Π°Π»Π° создаСтся стандартная пСрСмСнная с Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… Variant, Π·Π°Ρ‚Π΅ΠΌ Π΅ΠΉ присваиваСтся массив. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ пСрСмСнная ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»Π°ΡΡŒ Π² массив, ΠΈ с Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ массивами.

 Вусклый массив AsVariant As Variant
arrayAsVariant = Array (Β«AlphaΒ», Β«BravoΒ», Β«CharlieΒ») 

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ статичСский массив

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ макрос создаСт статичСский массив ΠΈΠ· 5 элСмСнтов (1, 2, 3, 4 ΠΈ 5).

 ПодлоТка CreateStaticArray ()

'Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ статичСский массив ΠΈΠ· 5 элСмСнтов (1, 2, 3, 4, 5)
Dim arr (ΠΎΡ‚ 1 Π΄ΠΎ 5) ΠΏΠΎ Π΄Π»ΠΈΠ½Π΅

End Sub 

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ массивы ΠΈΠΌΠ΅ΡŽΡ‚ основаниС 0, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ отсчСт с 0, Π° Π½Π΅ с 1. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ макрос создаСт статичСский массив ΠΈΠ· 6 элСмСнтов (0, 1, 2, 3, 4, 5). ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ массив создаСтся с 5 Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках, Π½ΠΎ ΠΈΠ·-Π·Π° Π±Π°Π·Ρ‹ 0 фактичСски создаСтся 6 элСмСнтов.

 ПодлоТка CreateStaticArrayStartingAtZero ()

'Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ статичСский массив ΠΈΠ· 6 элСмСнтов (0, 1, 2, 3, 4, 5)
Dim arr (5) По длинС

End Sub 

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ массивы Π² Π±Π°Π·Ρƒ 1 (Ρ‚.Π΅.Π΅., отсчСт начинаСтся с 1) ΠΏΡƒΡ‚Π΅ΠΌ вставки ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π² Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Ρ‡Π°ΡΡ‚ΡŒ модуля ΠΊΠΎΠ΄Π°.

 Option Base 1 

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ статичСского Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ нСсколько ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ (ΠΈΠ»ΠΈ подмассивов). Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ Π² строках ΠΈ столбцах. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ создали статичСский массив ΠΈΠ· 3 элСмСнтов, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся собствСнным массивом, содСрТащим Π΅Ρ‰Π΅ 3 элСмСнта.

 Sub Create2DimensionStaticArray ()

Dim arr (ΠΎΡ‚ 1 Π΄ΠΎ 3, ΠΎΡ‚ 1 Π΄ΠΎ 3) ΠΊΠ°ΠΊ строка

arr (1, 1) = "ΠΠ»ΡŒΡ„Π°"
arr (1, 2) = "Π―Π±Π»ΠΎΠΊΠΎ"
arr (1, 3) = "ΠœΡƒΡ€Π°Π²Π΅ΠΉ"
arr (2, 1) = "Π‘Ρ€Π°Π²ΠΎ"
arr (2, 2) = "ΠœΡΡ‡"
arr (2, 3) = "ЛСтучая ΠΌΡ‹ΡˆΡŒ"
arr (1, 1) = "Π§Π°Ρ€Π»ΠΈ"
arr (2, 2) = "Π‘Π°Π½ΠΊΠ°"
arr (3, 3) = "ΠšΠΎΡ‚"

End Sub 

ΠœΡ‹ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ двумя измСрСниями, VBA позволяСт Π½Π°ΠΌ Π΄ΠΎ 60! НС Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ я ΠΎΡ‡Π΅Π½ΡŒ использовал большС Ρ‚Ρ€Π΅Ρ…, Π½ΠΎ приятно Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ запасных.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ динамичСского массива

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

ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•. Π’Π΅Ρ€ΠΌΠΈΠ½ «динамичСский массив» Π² Excel ΠΈ VBA отличаСтся; это ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ макрос ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ создаСт динамичСский массив Π±Π΅Π· Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.Π—Π°Ρ‚Π΅ΠΌ, ΠΏΠΎΠ·ΠΆΠ΅ Π² макросС, Ρ€Π°Π·ΠΌΠ΅Ρ€ массива измСняСтся с использованиСм ReDim , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ 5 элСмСнтов, начиная с 1.

 Sub CreateDynamicArray ()

'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ массив
Dim arr () Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°

'Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива ΠΏΠΎΠ·ΠΆΠ΅ Π² макросС
ReDim arr (ΠΎΡ‚ 1 Π΄ΠΎ 5)

End Sub 

Π Π°Π·ΠΌΠ΅Ρ€ динамичСского массива ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π²ΠΎ врСмя выполнСния макроса (ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ это ΠΏΠΎΠ·ΠΆΠ΅ Π² этом постС).

Π―Ρ‡Π΅ΠΉΠΊΠΈ индСкса

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ индСкса (Ρ‚. Π•. ΠŸΠΎΠ·ΠΈΡ†ΠΈΡŽ Π² массивС).

ИндСкс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ макрос ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ порядковый Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта Π² массивС.

 Sub GetIndexOfFirstElement ()

'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ массив
Dim arr ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
arr = Array (Β«ΠΠ»ΡŒΡ„Π°Β», Β«Π‘Ρ€Π°Π²ΠΎΒ», Β«Π§Π°Ρ€Π»ΠΈΒ»)

'ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ порядковый Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта
MsgBox LBound (ΠΎΠ±Ρ€.)

End Sub 

LBound () - это функция, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ самый Π½ΠΈΠΆΠ½ΠΈΠΉ элСмСнт Π² массивС.

ИндСкс послСднСго элСмСнта

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ макрос ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ порядковый Π½ΠΎΠΌΠ΅Ρ€ послСднСго элСмСнта Π² массивС.

 Sub GetIndexOfLastElement ()

'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ массив
Dim arr ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
arr = Array (Β«ΠΠ»ΡŒΡ„Π°Β», Β«Π‘Ρ€Π°Π²ΠΎΒ», Β«Π§Π°Ρ€Π»ΠΈΒ»)

'ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ порядковый Π½ΠΎΠΌΠ΅Ρ€ послСднСго элСмСнта элСмСнта
MsgBox UBound (ΠΎΠ±Ρ€.)

ΠšΠΎΠ½Π΅Ρ† подписки
 

UBound () - это функция, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ самый высокий элСмСнт Π² массивС.

ΠŸΡ€ΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массиву

ПослС создания массива, динамичСского ΠΈΠ»ΠΈ статичСского, Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ способ присвоСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ элСмСнтам.

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ значСния элСмСнтам ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ макрос создаСт статичСский массив, Π° Π·Π°Ρ‚Π΅ΠΌ присваиваСт значСния ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

 Sub AssignFixedValuesToArray ()

Dim arr (ΠΎΡ‚ 1 Π΄ΠΎ 5) ΠΊΠ°ΠΊ строка

arr (1) = "ΠΠ»ΡŒΡ„Π°"
arr (2) = "Π‘Ρ€Π°Π²ΠΎ"
arr (3) = "Π§Π°Ρ€Π»ΠΈ"
arr (4) = "Π”Π΅Π»ΡŒΡ‚Π°"
arr (5) = "Π­Ρ…ΠΎ"

End Sub 

сообщаСт ΠΎΠ± этом adAssign значСния элСмСнтам со списком массивов

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ макрос дСмонстрируСт, ΠΊΠ°ΠΊ Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ значСния динамичСскому массиву Π½Π° основС списка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

 Sub AssignValuesFromListToArray ()

'Π’ΠΈΠΏ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Variant, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π»
Dim arr ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
arr = Array (Β«ΠΠ»ΡŒΡ„Π°Β», Β«Π‘Ρ€Π°Π²ΠΎΒ», Β«Π§Π°Ρ€Π»ΠΈΒ»)

End Sub 

Команда Array () - это ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ способ добавлСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² массив.

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ значСния элСмСнтам со строкой

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ макрос Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ строку Π½Π° массив.

 ΠŸΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π» SplitStringIntoArray ()

Dim arr ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
Dim myString As String

'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ список с ΠΎΠ±Ρ‰ΠΈΠΌ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ элСмСнтом
myString = "ΠΠ»ΡŒΡ„Π°, Π‘Ρ€Π°Π²ΠΎ, Π§Π°Ρ€Π»ΠΈ, Π”Π΅Π»ΡŒΡ‚Π°, Π­Ρ…ΠΎ"

'ΠŸΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ список Π² массив
arr = Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ (myString, ",")

End Sub 

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ значСния элСмСнтам ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ макрос создаСт Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив нСпосрСдствСнно ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°.

 Sub ReadRangeToArray ()

Dim arr ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
arr = ActiveSheet.Range ("A1: C3"). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅2

End Sub 

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

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ массивов Π² строку ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ² массив, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² строку ΠΈΠ»ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ значСния Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ массив Π² строку

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ создаСт массив, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Join для прСобразования Π΅Π³ΠΎ Π² строку.

 Sub JoinArrayIntoString ()

Dim arr ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
Dim connectedString As String

'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ массив
arr = Array (Β«ΠΠ»ΡŒΡ„Π°Β», Β«Π‘Ρ€Π°Π²ΠΎΒ», Β«Π§Π°Ρ€Π»ΠΈΒ»)

'ΠŸΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ массив Π² строку, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт отдСляСтся запятой
connectedString = ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΡΡ (arr, ",")

End Sub 

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ массив Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ записан Π² ячСйки Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа Π² Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΌ ΠΈΠ»ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ.

 Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ WriteArrayToRange ()

Dim arr ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
arr = Array (Β«ΠΠ»ΡŒΡ„Π°Β», Β«Π‘Ρ€Π°Π²ΠΎΒ», Β«Π§Π°Ρ€Π»ΠΈΒ», Β«Π”Π΅Π»ΡŒΡ‚Π°Β», Β«Π­Ρ…ΠΎΒ»)

'Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ массив ΠΏΠΎ столбцам
ActiveSheet.Range ("D1: h2") = arr

'ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π°, Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ массив ΠΏΠΎ строкам
'ActiveSheet.Range ("D1: D5") = Application.Transpose (arr)

End Sub 

Π¦ΠΈΠΊΠ» ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту Π² массивС

БущСствуСт Π΄Π²Π° способа цикличСского просмотра элСмСнтов массива:

  • Π¦ΠΈΠΊΠ» For - ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ LBound ΠΈ UBound для опрСдСлСния количСства Ρ†ΠΈΠΊΠ»ΠΎΠ²
  • For Each Ρ†ΠΈΠΊΠ» - ΠŸΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π² массивС

ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•. - Π¦ΠΈΠΊΠ» For Each ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ элСмСнты Π² массивС; Π΅Π³ΠΎ нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для измСнСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, присвоСнных элСмСнтам.

Π¦ΠΈΠΊΠ» For: ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ создаСтся ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив, Π° Π·Π°Ρ‚Π΅ΠΌ выполняСтся Ρ†ΠΈΠΊΠ» ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту Π² массивС.

 Sub ForLoopThroughArray ()

Dim arr ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
Вусклый я Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°

arr = Array (Β«ΠΠ»ΡŒΡ„Π°Β», Β«Π‘Ρ€Π°Π²ΠΎΒ», Β«Π§Π°Ρ€Π»ΠΈΒ», Β«Π”Π΅Π»ΡŒΡ‚Π°Β», Β«Π­Ρ…ΠΎΒ»)

'Π¦ΠΈΠΊΠ» ΠΎΡ‚ элСмСнтов LowerBound ΠΊ UpperBound Π² массивС
Для i = LBound (arr) To UBound (arr)

    MsgBox arr (i)

Π”Π°Π»Π΅Π΅ я

End Sub 

Π¦ΠΈΠΊΠ» For: ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив

Π¦ΠΈΠΊΠ» For Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄Π΅.

 ПодлоТка ForLoopThrough3DimensionArray ()

Dim arr (ΠΎΡ‚ 1 Π΄ΠΎ 3, ΠΎΡ‚ 1 Π΄ΠΎ 3) ΠΊΠ°ΠΊ строка
Вусклый я Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°
Dim j As Long

arr (1, 1) = "ΠΠ»ΡŒΡ„Π°"
arr (1, 2) = "Π―Π±Π»ΠΎΠΊΠΎ"
arr (1, 3) = "ΠœΡƒΡ€Π°Π²Π΅ΠΉ"
arr (2, 1) = "Π‘Ρ€Π°Π²ΠΎ"
arr (2, 2) = "ΠœΡΡ‡"
arr (2, 3) = "ЛСтучая ΠΌΡ‹ΡˆΡŒ"
arr (3, 1) = "Π§Π°Ρ€Π»ΠΈ"
arr (3, 2) = "Π‘Π°Π½ΠΊΠ°"
arr (3, 3) = "ΠšΠΎΡ‚"

Для i = LBound (arr) To UBound (arr)

    Для j = LBound (arr, 2) To UBound (arr, 2)

        MsgBox arr (i, j)

    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ j

Π”Π°Π»Π΅Π΅ я

End Sub 

For Each Ρ†ΠΈΠΊΠ»: ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив

Π¦ΠΈΠΊΠ» For Each Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом.Однако ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· массива, ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ значСния массиву.

 Sub ForEachLoopThroughArray ()

Dim arr ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
Dim arrElement ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚

arr = Array (Β«ΠΠ»ΡŒΡ„Π°Β», Β«Π‘Ρ€Π°Π²ΠΎΒ», Β«Π§Π°Ρ€Π»ΠΈΒ», Β«Π”Π΅Π»ΡŒΡ‚Π°Β», Β«Π­Ρ…ΠΎΒ»)

'ΠŸΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ массив с использованиСм ΠΌΠ΅Ρ‚ΠΎΠ΄Π° For Each
Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ arrElement In arr

    MsgBox arrElement

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ arrElement

End Sub 

For Each Ρ†ΠΈΠΊΠ»: ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ†ΠΈΠΊΠ» For Each ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π΅Π½ ΠΊΠ°ΠΊ для ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΈ для ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов.

 Sub ForEachLoopThrough3DimensionArray ()

Dim arr (ΠΎΡ‚ 1 Π΄ΠΎ 3, ΠΎΡ‚ 1 Π΄ΠΎ 3) ΠΊΠ°ΠΊ строка
Dim arrElement ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚

arr (1, 1) = "ΠΠ»ΡŒΡ„Π°"
arr (1, 2) = "Π―Π±Π»ΠΎΠΊΠΎ"
arr (1, 3) = "ΠœΡƒΡ€Π°Π²Π΅ΠΉ"
arr (2, 1) = "Π‘Ρ€Π°Π²ΠΎ"
arr (2, 2) = "ΠœΡΡ‡"
arr (2, 3) = "ЛСтучая ΠΌΡ‹ΡˆΡŒ"
arr (3, 1) = "Π§Π°Ρ€Π»ΠΈ"
arr (3, 2) = "Π‘Π°Π½ΠΊΠ°"
arr (3, 3) = "ΠšΠΎΡ‚"

'ΠŸΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· массив
Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ arrElement In arr

    MsgBox arrElement

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ arrElement

End Sub 

Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ VBA Π·Π° сСкунды с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ AutoMacro

AutoMacro - это ΠΌΠΎΡ‰Π½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° VBA, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ поставляСтся с ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ ΠΊΠΎΠ΄Π° ΠΈ мноТСством Π΄Ρ€ΡƒΠ³ΠΈΡ… инструмСнтов ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ для экономии Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Если Π²Ρ‹ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ программист, ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΠΉ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ врСмя, ΠΈΠ»ΠΈ Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ, просто ΠΏΡ‹Ρ‚Π°ΡŽΡ‰ΠΈΠΉΡΡ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²Π΅Ρ‰ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, AutoMacro - это инструмСнт для вас.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ, Π΅ΡΡ‚ΡŒ Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² массивС

Нам часто Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π² массивС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, сущСствуСт Π»ΠΈ элСмСнт. НиТС приводится функция ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ использования для поиска ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ значСния Π² массивС.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ:

  • True = искомоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ находится Π² массивС
  • False = искомоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ отсутствуСт Π² массивС

Ѐункция ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° (1) массив ΠΈ (2 ) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ.

 Ѐункция IsValueInArray (arr As Variant, find As Variant) As Boolean

Dim arrElement ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚

'ΠŸΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· массив
Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ arrElement In arr

    Если arrElement = find, Ρ‚ΠΎ
        IsValueInArray = True
        Ѐункция Π²Ρ‹Ρ…ΠΎΠ΄Π°
    ΠšΠΎΠ½Π΅Ρ†, Ссли

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ arrElement

IsValueInArray = False

Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ 

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅; ΠΎΠ½ сообщаСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ строку Β«BravoΒ» Π² массивС. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ - Π˜ΡΡ‚ΠΈΠ½Π°, Ссли Π½Π°ΠΉΠ΄Π΅Π½, ΠΈΠ»ΠΈ Π›ΠΎΠΆΡŒ, Ссли Π½Π΅Ρ‚.

 Sub UseFunctionValueInArray ()

Dim arr ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
Dim arrElement ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚

arr = Array (Β«ΠΠ»ΡŒΡ„Π°Β», Β«Π‘Ρ€Π°Π²ΠΎΒ», Β«Π§Π°Ρ€Π»ΠΈΒ», Β«Π”Π΅Π»ΡŒΡ‚Π°Β», Β«Π­Ρ…ΠΎΒ»)

MsgBox IsValueInArray (arr, Β«Π‘Ρ€Π°Π²ΠΎΒ»)

End Sub 

НайдитС индСкс элСмСнта Π² массивС

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… ΠΌΡ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π»ΠΈ True ΠΈΠ»ΠΈ False Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, сущСствуСт Π»ΠΈ элСмСнт. Но часто этого нСдостаточно, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π·Π½Π°Ρ‚ΡŒ, Π³Π΄Π΅ ΠΎΠ½ находится Π² массивС. НиТС приводится функция ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ использования, которая Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² массивС, Π° Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ индСкса:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ:

  • Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½ΠΎΠ΅ число = ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ индСкса искомого значСния
  • False = искомоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½

Ѐункция ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°: Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для поиска ΠΈ массив для поиска.

 Ѐункция PositionInArray (arr As Variant, find As Variant) As Variant

Вусклый я Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°

Для i = LBound (arr) To UBound (arr)

    Если arr (i) = find, Ρ‚ΠΎ

        PositionInArray = i
        Ѐункция Π²Ρ‹Ρ…ΠΎΠ΄Π°

    ΠšΠΎΠ½Π΅Ρ†, Ссли

Π”Π°Π»Π΅Π΅ я

PositionInArray = False

ΠšΠΎΠ½Π΅Ρ‡Π½Π°Ρ функция 

НиТС ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ; Ссли строка Β«BravoΒ» Π½Π°ΠΉΠ΄Π΅Π½Π° Π² массивС, ΠΎΠ½Π° Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ индСкса ΠΈΠ»ΠΈ False, Ссли Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°.

 Sub UseFunctionPositionInArray ()

Dim arr ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
Dim arrElement ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚

arr = Array (Β«ΠΠ»ΡŒΡ„Π°Β», Β«Π‘Ρ€Π°Π²ΠΎΒ», Β«Π§Π°Ρ€Π»ΠΈΒ», Β«Π”Π΅Π»ΡŒΡ‚Π°Β», Β«Π­Ρ…ΠΎΒ»)

MsgBox PositionInArray (arr, "Π‘Ρ€Π°Π²ΠΎ")

End Sub 

ИзмСнСниС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива

Как ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Π²Ρ‹ΡˆΠ΅, динамичСскиС массивы ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±Π΅Π· Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.ПозТС Π² ΠΊΠΎΠ΄Π΅ для опрСдСлСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ReDim . ReDim ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· Π²ΠΎ врСмя макроса для измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° динамичСского массива.

НСвозмоТно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ статичСских массивов, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкС.

ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ReDim присвоСнныС значСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‡ΠΈΡ‰Π΅Π½Ρ‹. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ значСния, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ReDim Preserve .

ИзмСнСниС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ пустыС значСния

ΠœΠ°ΠΊΡ€ΠΎΡ Π½ΠΈΠΆΠ΅ создаСт, Π° Π·Π°Ρ‚Π΅ΠΌ измСняСт Ρ€Π°Π·ΠΌΠ΅Ρ€ массива.ПослС этого ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‡Π΅Ρ€Π΅Π· массив, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ послС ReDim значСния ΠΎΡ‡ΠΈΡ‰Π°ΡŽΡ‚ΡΡ.

 Sub ResizeArraySize ()

Dim arr ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
Dim arrElement ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚

arr = Array (Β«ΠΠ»ΡŒΡ„Π°Β», Β«Π‘Ρ€Π°Π²ΠΎΒ», Β«Π§Π°Ρ€Π»ΠΈΒ», Β«Π”Π΅Π»ΡŒΡ‚Π°Β», Β«Π­Ρ…ΠΎΒ»)

'Массив измСнится, потСряв всС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ значСния
ReDim arr (ΠΎΡ‚ 0 Π΄ΠΎ 5)

'ΠŸΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ массив с использованиСм ΠΌΠ΅Ρ‚ΠΎΠ΄Π° For Each - всС элСмСнты пусты
Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ arrElement In arr

    MsgBox arrElement

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ arrElement

End Sub 

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ значСния

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ макрос создаСт, Π° Π·Π°Ρ‚Π΅ΠΌ измСняСт Ρ€Π°Π·ΠΌΠ΅Ρ€ массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ReDim Preserve .Как ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ» For Each, ΠΏΡ€ΠΈ использовании ReDim Preserve значСния ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ.

 Sub ResizeArraySizeKeepValues ​​()

Dim arr ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
Dim arrElement ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚

arr = Array (Β«ΠΠ»ΡŒΡ„Π°Β», Β«Π‘Ρ€Π°Π²ΠΎΒ», Β«Π§Π°Ρ€Π»ΠΈΒ», Β«Π”Π΅Π»ΡŒΡ‚Π°Β», Β«Π­Ρ…ΠΎΒ»)

'Массив измСнится, потСряв всС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ значСния
ReDim Preserve arr (ΠΎΡ‚ 0 Π΄ΠΎ 5)

'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² массив
arr (5) = "Ѐокстрот"

'ΠŸΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ массив с использованиСм ΠΌΠ΅Ρ‚ΠΎΠ΄Π° For Each - всС элСмСнты пусты
Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ arrElement In arr

    MsgBox arrElement

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ arrElement

End Sub 

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ сортировки массива

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ функция сортируСт массив Π² Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½ΠΎΠΌ порядкС.Ѐункция ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ СдинствСнный Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - сортируСмый массив.

 Ѐункция SortingArrayBubbleSort (arr ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚)

Вусклый я Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°
Dim j As Long
Dim temp ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚

Для i = LBound (arr) To UBound (arr) - 1

    Для j = i + 1 To UBound (ΠΎΠ±Ρ€.)

        Если arr (i)> arr (j) Π’ΠΎΠ³Π΄Π°

            temp = arr (j)
            arr (j) = arr (i)
            arr (i) = temp

        ΠšΠΎΠ½Π΅Ρ†, Ссли

    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ j

Π”Π°Π»Π΅Π΅ я

SortingArrayBubbleSort = arr

Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ 

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

 Sub CallBubbleSort ()

Dim arr ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
arr = Array (Β«Π§Π°Ρ€Π»ΠΈΒ», Β«Π”Π΅Π»ΡŒΡ‚Π°Β», Β«Π‘Ρ€Π°Π²ΠΎΒ», Β«Π­Ρ…ΠΎΒ», Β«ΠΠ»ΡŒΡ„Π°Β»)

arr = SortingArrayBubbleSort (ΠΎΠ±Ρ€)

End Sub 

ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ порядок массива

Ѐункция Π½ΠΈΠΆΠ΅ мСняСт порядок массива Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ. Ѐункция ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ имя массива Π² качСствС СдинствСнного Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°.

 Ѐункция ReverseArray (arr ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚)

Dim temp ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
Вусклый я Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°
Dim arrSize As Long
Dim arrMid As Long

arrSize = UBound (ΠΎΠ±Ρ€)
arrMid = (UBound (arr) - LBound (arr)) \ 2 + LBound (arr)

Для i = LBound (arr) To arrMid

    temp = arr (Ρ€Π°Π·ΠΌΠ΅Ρ€ arr)
    arr (Ρ€Π°Π·ΠΌΠ΅Ρ€ arr) = arr (i)
    arr (i) = temp
    arrSize = arrSize - 1

Π”Π°Π»Π΅Π΅ я

ReverseArray = arr

Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ 

Код Π½ΠΈΠΆΠ΅ являСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ использования ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

 Sub CallReverseArray ()

Dim arr ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
arr = Array (Β«ΠΠ»ΡŒΡ„Π°Β», Β«Π‘Ρ€Π°Π²ΠΎΒ», Β«Π§Π°Ρ€Π»ΠΈΒ», Β«Π”Π΅Π»ΡŒΡ‚Π°Β», Β«Π­Ρ…ΠΎΒ»)

ΠΎΠ±Ρ€ = ReverseArray (ΠΎΠ±Ρ€)

End Sub 

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ массива

Наряду с LBound, UBound, Split ΠΈ Join Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ являСтся Filter.

Ѐункция Filter Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ элСмСнты, содСрТащиС подстроку. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ массив filterArr Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ элСмСнты, содСрТащиС Π±ΡƒΠΊΠ²Ρƒ Β«oΒ»,

 Sub FilterArray ()

Dim arr ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
Dim filterArr ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
Dim arrElement ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚

arr = Array (Β«ΠΠ»ΡŒΡ„Π°Β», Β«Π‘Ρ€Π°Π²ΠΎΒ», Β«Π§Π°Ρ€Π»ΠΈΒ», Β«Π”Π΅Π»ΡŒΡ‚Π°Β», Β«Π­Ρ…ΠΎΒ»)

'Π€ΠΈΠ»ΡŒΡ‚Ρ€ массива для Π»ΡŽΠ±Ρ‹Ρ… элСмСнтов с Π±ΡƒΠΊΠ²ΠΎΠΉ Β«ΠΎΒ»
filterArr = Π€ΠΈΠ»ΡŒΡ‚Ρ€ (ΠΎΠ±Ρ€., "ΠΎ")

'ΠŸΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ массив
Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта arrElement Π² filterArr

    MsgBox arrElement

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ arrElement

End Sub 

Ѐункция Filter ΠΈΠΌΠ΅Π΅Ρ‚ 4 Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°:

 Filter (SourceArray, Match, [Include], [CompareType]) 
  • SourceArray - исходный массив
  • Match - подстрока для соотвСтствия
  • Include (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ True Ссли Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½)
    • True = Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ сопоставлСнныС элСмСнты
    • False = ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ сопоставлСнныС элСмСнты
  • CompareType Include (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 0, Ссли Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½):
    • 0 = vbBinaryCompare - совпадСниС Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ рСгистру
    • 1 = vbTextCompare - совпадСниС Π½Π΅ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ рСгистру

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

НадСюсь, этот пост ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π²Π°ΡˆΠΈΡ… потрСбностСй.Однако массивы VBA - ΠΎΠ±ΡˆΠΈΡ€Π½Π°Ρ Ρ‚Π΅ΠΌΠ°, поэтому ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ½Π»Π°ΠΉΠ½-Ρ„ΠΎΡ€ΡƒΠΌΡ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ вопросы, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ этот пост Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚.

НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅:

Если Π²Ρ‹ нашли этот пост ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ Ρƒ вас Π΅ΡΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π½ΠΈΠΆΠ΅.

Π’Π°ΠΌ Π½ΡƒΠΆΠ½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π² Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΠΈ этого ΠΊ вашим потрСбностям?

Π― полагаю, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π² этом постС Π½Π΅ совсСм ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ вашСй ситуации. ВсС ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Excel ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, поэтому Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ сообщСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚ потрСбности всСх.ΠŸΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ² врСмя Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹, ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π² этом постС (ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… мСстах Π½Π° этом сайтС), Π²Ρ‹ смоТСтС Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΊ своим потрСбностям.

Но, Ссли Π²Ρ‹ всС Π΅Ρ‰Π΅ Π±ΠΎΡ€Π΅Ρ‚Π΅ΡΡŒ, Π²Π°ΠΌ слСдуСт:

  1. ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π±Π»ΠΎΠ³ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΈΠ΄Π΅ΠΎ Π½Π° YouTube Π½Π° Ρ‚Ρƒ ΠΆΠ΅ Ρ‚Π΅ΠΌΡƒ. Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС ΠΏΠΎΠ»ΡŒΠ·Ρ‹, ΠΎΡ‚ΠΊΡ€Ρ‹Π² свои собствСнныС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.
  2. БпроситС Β«Excel NinjaΒ» Π² своСм офисС. Π£Π΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π·Π½Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ люди.
  3. Π—Π°Π΄Π°ΠΉΡ‚Π΅ вопрос Π½Π° Ρ„ΠΎΡ€ΡƒΠΌΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Mr Excel, ΠΈΠ»ΠΈ Π² сообщСствС ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² Microsoft.ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ люди Π½Π° этих Ρ„ΠΎΡ€ΡƒΠΌΠ°Ρ… ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ проводят своС врСмя бСсплатно. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΠΎΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΡΡ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свой вопрос, сдСлайтС Π΅Π³ΠΎ ясным ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌ. Π‘ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ список всСго, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ, ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ снимки экрана, Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… ΠΊΠ½ΠΈΠ³.
  4. Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ Excel Rescue, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΌΠΎΠΈΠΌ ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€ΠΎΠΌ-ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Π½Ρ‚ΠΎΠΌ. Они ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚, прСдлагая Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Excel.

Π§Ρ‚ΠΎ дальшС?
НС ΡƒΡ…ΠΎΠ΄ΠΈΡ‚Π΅, Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π΅Π³ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎΠ± Excel Off The Grid. ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с послСдними сообщСниями:

Excel VBA Array and Array Methods with examples

Π’ этом руководствС ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‚ΡΡ массивы VBA, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ массивов, Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ массива ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² программирования:

ΠžΠ±Ρ‹Ρ‡Π½Π°Ρ пСрСмСнная VBA - это Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ хранится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….Он ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ 1 ΠΊ 1, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ 1 пСрСмСнная для 1 значСния.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚Π΅ нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ нСсколько ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всС ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π­Ρ‚Π° пСрСмСнная называСтся ARRAY.

=> ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅ здСсь, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΡΠ΅Ρ€ΠΈΡŽ ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ VBA для всСх

Π’ этом руководствС Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ массив VBA, ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ ΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массивы, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ массивов, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ фиксированный ΠΈ динамичСский.ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ разбСрСмся с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² VBA.

Массив VBA

ΠœΠ°ΡΡΠΈΠ²Ρ‹ - это особый Π²ΠΈΠ΄ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ….

НапримСр, , Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π° 100 сотрудников, Ρ‚ΠΎ вмСсто создания 100 ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… строки Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ массива Ρ‚ΠΈΠΏΠ° string ΠΈ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ 100 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ массива.

ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив

Массив, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ всС элСмСнты находятся Π² ΠΎΠ΄Π½ΠΎΠΉ строкС ΠΈΠ»ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ столбцС, называСтся ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом.ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ всСх ΡƒΡ‡Π΅Π½ΠΈΠΊΠΎΠ² класса Π² ΠΎΠ΄Π½ΠΎΠΌ столбцС - это ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива. ЗаявлСно, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.

Dim arrayyname (ниТняя Π³Ρ€Π°Π½ΠΈΡ†Π° To UpperBound) ΠΊΠ°ΠΊ DataType

Π•ΡΡ‚ΡŒ нСсколько способов ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ массив. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².

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

# 1) Dim MyArrayExample (ΠΎΡ‚ 0 Π΄ΠΎ 3) ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ массив с ячСйками 0,1,2,3, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ цСлочислСнныС значСния.

# 2) Dim MyArray2 (3) As String

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΡ‚ 0 Π΄ΠΎ 3 ΠΈ создаСт массив с мСстополоТСниСм 0,1,2,3, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ значСния String.

# 3) Dim MyArray2 (ΠΎΡ‚ 13 Π΄ΠΎ 15) ΠΊΠ°ΠΊ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ массив, начиная с 13, Ρ‚. Π•. 13, 14 ΠΈ 15, ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ значСния Double. ΠœΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ ниТнюю Π³Ρ€Π°Π½ΠΈΡ†Ρƒ ΠΊΠ°ΠΊ 13, поэтому массив Π½Π°Ρ‡Π½Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ значСния ΠΈΠ· ячСйки 13, Π° Π½Π΅ 0.

Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим простой ΠΊΠΎΠ΄ ΠΈ разбСрСмся со всСми трСмя способами объявлСния массива.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Для написания ΠΊΠΎΠ΄Π° VB ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Microsoft Excel (ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ вСрсии: Excel 2007, 2010, 2013, 2016, 2019). ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° -> Visual Basic (ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сочСтаниС клавиш Alt + F11). Π’ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ VB Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Insert -> Module ΠΈ Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄.

Рассмотрим ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ объявлСний.

 Частный субмассивExample1 ()
Dim firstQuarter (ΠΎΡ‚ 0 Π΄ΠΎ 2) As String β€˜ΡΠΎΠ·Π΄Π°Π΅Ρ‚ массив с индСксом 0,1,2
firstQuarter (0) = "Π―Π½Π²"
firstQuarter (1) = "Π€Π΅Π²Ρ€Π°Π»ΡŒ"
firstQuarter (2) = "ΠœΠ°Ρ€"
MsgBox "ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠ²Π°Ρ€Ρ‚Π°Π» калСндаря" & "" & firstQuarter (0) & "" & firstQuarter (1) & "" & firstQuarter (2)
ΠšΠΎΠ½Π΅Ρ† подписки

Частный подмассивExample2 ()
Dim secondQuarter (2) As String β€˜ΡΠΎΠ·Π΄Π°Π΅Ρ‚ массив с индСксом 0,1,2
secondQuarter (0) = "Π°ΠΏΡ€Π΅Π»ΡŒ"
secondQuarter (1) = "Май"
secondQuarter (2) = "июнь"
MsgBox "Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ²Π°Ρ€Ρ‚Π°Π» Π² ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Π΅" & "" & secondQuarter (0) & "" & secondQuarter (1) & "" & secondQuarter (2)
ΠšΠΎΠ½Π΅Ρ† подписки

Частный подмассивExample3 ()
Dim thirdQuarter (ΠΎΡ‚ 13 Π΄ΠΎ 15) As String β€˜ΡΠΎΠ·Π΄Π°Π΅Ρ‚ массив с индСксом 13,14,15
thirdQuarter (13) = "июль"
thirdQuarter (14) = "Авг"
thirdQuarter (15) = "Π‘Π΅Π½"
MsgBox "Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΠΊΠ²Π°Ρ€Ρ‚Π°Π» калСндаря" & "" ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΊΠ²Π°Ρ€Ρ‚Π°Π» (13) & "" ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΊΠ²Π°Ρ€Ρ‚Π°Π» (14) & "" ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΊΠ²Π°Ρ€Ρ‚Π°Π» (15)
ΠšΠΎΠ½Ρ†Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π½ΠΈΠΊ 

НаТмитС F5 ΠΈΠ»ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ запуска Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄.

ΠžΠ±Ρ‹Ρ‡Π½Π°Ρ пСрСмСнная ΠΈ пСрСмСнная массива

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив. Π˜Ρ‚Π°ΠΊ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΉΠΌΠ΅ΠΌ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ массивы Ρ‚Π°ΠΊ Π²Π°ΠΆΠ½Ρ‹ Π² языках программирования.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ввСсти Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρƒ 5 сотрудников. Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ этого с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ 5 ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

 ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Π°Ρ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° RegularVariable ()

Вусклый ΡˆΠ΅Ρ‚ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ лист
Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ shet = ThisWorkbook.Worksheets ("Sheet1")

'ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ студСнта
Dim Emp1 As String
Dim Emp2 As String
Dim Emp3 As String
Dim Emp4 As String
Dim Emp5 ΠΊΠ°ΠΊ строка

'ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΠΈ ΡƒΡ‡Π΅Π½ΠΈΠΊΠΎΠ² ΠΈΠ· ячСйки
Emp1 = ΡˆΠ΅Ρ‚.Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("A" ΠΈ 2). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
Emp2 = shet.Range ("A" & 3) .Value
Emp3 = shet.Range ("A" & 4) .Value
Emp4 = shet.Range ("A" & 5) .Value
Emp5 = shet.Range ("A" & 6) .Value

'ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ ΠΎΡ†Π΅Π½ΠΎΠΊ учащихся
Debug.Print "Emp Name"
Debug.Print Emp1
Debug.Print Emp2
ΠžΡ‚Π»Π°Π΄ΠΊΠ°.ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ Emp3
Debug.Print Emp4
Debug.Print Emp5
ΠšΠΎΠ½Ρ†Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π½ΠΈΠΊ 

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ создадим Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Array.

 ΠžΠΏΡ†ΠΈΡ Явная

Public Sub ArrayVarible ()
Вусклый ΡˆΠ΅Ρ‚ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ лист
УстановитС shet = ThisWorkbook.Π Π°Π±ΠΎΡ‡ΠΈΠ΅ листы («Лист1Β»)

Вусклый сотрудник (ΠΎΡ‚ 1 Π΄ΠΎ 6) Π² Π²ΠΈΠ΄Π΅ строки
Dim i ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
Для i = ΠΎΡ‚ 1 Π΄ΠΎ 6
Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊ (i) = shet.Range ("A" & i) .Value
Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊ Debug.Print (i)
Π”Π°Π»Π΅Π΅ я
ΠšΠΎΠ½Ρ†Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π½ΠΈΠΊ 

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ использовали ΠΎΠ΄Π½Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ массива, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ всС ΠΈΠΌΠ΅Π½Π° сотрудников. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ 100 ΠΈΠΌΠ΅Π½ сотрудников, Ρ‚ΠΎΠ³Π΄Π° Π²Π°ΠΌ просто Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ.

Π­Ρ‚ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ количСство строк Π² ΠΊΠΎΠ΄Π΅ ΠΈ Ρ‚Π΅ΠΌ самым сдСлаСт Π΅Π³ΠΎ Π»Π΅Π³ΠΊΠΎ понятным ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ.

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

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΈΠΌΠ΅Π΅Ρ‚ 2 индСкса: ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ индСкс прСдставляСт строки, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ индСкс прСдставляСт столбСц. Он состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строк ΠΈ столбцов ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ прСдставлСн Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

ОбъявлСниС Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Dim ArrayName (ΠΎΡ‚ FirstIndex Π΄ΠΎ LastIndex, ΠΎΡ‚ FirstIndex Π΄ΠΎ LastIndex) ΠΊΠ°ΠΊ DataType.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ хранСния ΠΎΡ†Π΅Π½ΠΎΠΊ 2 ΡƒΡ‡Π΅Π½ΠΈΠΊΠΎΠ², ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎ 3 ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°ΠΌ.Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ создадим Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°ΠΉΠΌΠ΅Ρ‚ 2 строки ΠΈ 3 столбца.

ΠœΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ массив ΠΎΡ‚ строки 1 Π΄ΠΎ строки 2 ΠΈ столбца 1 Π΄ΠΎ столбца 3.

 Sub Twodim ()
Dim totalMarks (ΠΎΡ‚ 1 Π΄ΠΎ 2, ΠΎΡ‚ 1 Π΄ΠΎ 3) ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
totalMarks (1, 1) = 23
totalMarks (2, 1) = 34
totalMarks (1, 2) = 33
totalMarks (2, 2) = 55
totalMarks (1, 3) = 45
totalMarks (2, 3) = 44
Msgbox «ВсСго ΠΎΡ†Π΅Π½ΠΎΠΊ Π² строкС 2 ΠΈ столбцС 2Β» & totalMarks (2,2)
Msgbox «ВсСго ΠΎΡ†Π΅Π½ΠΎΠΊ Π² строкС 1 ΠΈ столбцС 3Β» & totalMarks (1,3)
ΠšΠΎΠ½Ρ†Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π½ΠΈΠΊ 

НаТмитС F5 ΠΈΠ»ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ запуска Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄.

Π‘Ρ‚Ρ€ΠΎΠΊΠ° 2 ΠΈ столбСц 2

Ряд 1 ΠΈ столбСц 3

ЀиксированныС массивы

ЀиксированныС массивы

, Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ статичСскими массивами, ΠΈΠΌΠ΅ΡŽΡ‚ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ниТнюю ΠΈ Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹, ΠΈ этот Ρ€Π°Π·ΠΌΠ΅Ρ€ нСльзя ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²ΠΎ врСмя выполнСния. Π Π°Π·ΠΌΠ΅Ρ€ массива указываСтся ΠΏΡ€ΠΈ объявлСнии Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках. ВсС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ фиксированными массивами, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²ΠΎ врСмя объявлСния.

ЀиксированныС массивы ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ массива. НапримСр, количСство Π΄Π½Π΅ΠΉ Π² Π½Π΅Π΄Π΅Π»Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив с Π½ΠΈΠΆΠ½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π΅ΠΉ 0 ΠΈ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π΅ΠΉ 6 ΠΈ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€.

ДинамичСскиС массивы

Dynamic Arrays ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива Π²ΠΎ врСмя выполнСния. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ массива. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΏΡ€ΠΈ поступлСнии Π² ΠΊΠΎΠ»Π»Π΅Π΄ΠΆ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ Π·Π½Π°Ρ‚ΡŒ, сколько студСнтов Π½Π° самом Π΄Π΅Π»Π΅ Π±ΡƒΠ΄Π΅Ρ‚ зачислСно, поэтому Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΡ… количСство Π²ΠΎ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ»ΠΈ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ.

ОбъявлСниС динамичСского массива Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ статичСскому массиву с пустыми скобками.

Вусклый сотрудник () Π² Π²ΠΈΠ΄Π΅ строки

Π Π•Π”Π˜Πœ

Когда ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ REDIM , ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ниТняя Π³Ρ€Π°Π½ΠΈΡ†Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π°, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ массива.

 БубдинамичСский массив ()
Dim dynArray () ΠΊΠ°ΠΊ строка
Вусклый Ρ‚Π²ΠΎΡ€ΠΎΠ³ ΠΊΠ°ΠΊ Ρ„ΠΈΠ½ΠΈΠΊ
curdate = БСйчас

ReDim dynArray (2) Β«Redim ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива Π²ΠΎ врСмя выполнСния.
dynArray (0) = "Π”ΠΆΠΎΠ½"
dynArray (1) = "Π’ΠΎΠΌ"
dynArray (2) = "Π’ΠΎΠ½Π½ΠΈ"

MsgBox "Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚Ρ‹, зачислСнныС послС" & curdate & ":" & dynArray (0) & "," & dynArray (1) & "," & dynArray (2)
ΠšΠΎΠ½Ρ†Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π½ΠΈΠΊ 

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива Π²ΠΎ врСмя выполнСния, поэтому ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ReDim всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ubound массива.ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π΅Ρ‰Π΅ Ρ€Π°Π· ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ имя студСнта.

 Sub RedimExample ()
Dim dynArray () ΠΊΠ°ΠΊ строка
Вусклый Ρ‚Π²ΠΎΡ€ΠΎΠ³ ΠΊΠ°ΠΊ Ρ„ΠΈΠ½ΠΈΠΊ
curdate = БСйчас
Π Π°Π·ΠΌΠ΅Ρ€ тусклого изобраТСния ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число

ReDim dynArray (2)
dynArray (0) = "Π”ΠΆΠΎΠ½"
dynArray (1) = "Π’ΠΎΠΌ"
dynArray (2) = "Π’ΠΎΠ½Π½ΠΈ"
MsgBox "Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚Ρ‹, зачислСнныС Π΄ΠΎ" & curdate & "are" & dynArray (0) & "," & dynArray (1)
& "," & dynArray (2)

ReDim dynArray (3) β€˜Redim ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ массив ΠΈ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ старыС значСния
dynArray (3) = "Π”ΠΆΠΎΠ½"
MsgBox "Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚Ρ‹, зачислСнныС Π΄ΠΎ" & curdate & "are" & dynArray (0) & "," & dynArray (1)
 & "," & dynArray (2) & "," & dynArray (3)
ΠšΠΎΠ½Ρ†Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π½ΠΈΠΊ 

Π’Ρ‹ Π±Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Ρ€Π°Π½Π΅Π΅ студСнтов, ΠΎΠ½ Π΄Π°Π΅Ρ‚ Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Redim создаст Π½ΠΎΠ²Ρ‹ΠΉ массив с Π½ΠΎΠ²Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΈ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ старыС значСния.

Π—Π°ΠΏΠΎΠ²Π΅Π΄Π½ΠΈΠΊ ReDim

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ€Π΅ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½Π°ΠΌ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ReDim, сохраняя старыС значСния ΠΈ Ρ‚Π΅ΠΌ самым увСличивая Ρ€Π°Π·ΠΌΠ΅Ρ€ массива.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ReDim Preserve.

 Sub preserveExample ()
Dim dynArray () ΠΊΠ°ΠΊ строка
Вусклый Ρ‚Π²ΠΎΡ€ΠΎΠ³ ΠΊΠ°ΠΊ Ρ„ΠΈΠ½ΠΈΠΊ
curdate = БСйчас
Π Π°Π·ΠΌΠ΅Ρ€ тусклого изобраТСния ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число

ReDim dynArray (2)
dynArray (0) = "Π”ΠΆΠΎΠ½"
dynArray (1) = "Π’ΠΎΠΌ"
dynArray (2) = "Π’ΠΎΠ½Π½ΠΈ"
MsgBox "Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚Ρ‹, зачислСнныС Π΄ΠΎ" & curdate & "are" & dynArray (0) & "," & dynArray (1) & "," & dynArray (2)

ReDim preserve dynArray (3) β€˜Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Redim сохранит старыС значСния
dynArray (3) = "Π”ΠΆΠΎΠ½"
MsgBox "Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚Ρ‹, зачислСнныС Π΄ΠΎ" & curdate & "are" & dynArray (0) & "," & dynArray (1)
& "," & dynArray (2) & "," & dynArray (3)
ΠšΠΎΠ½Ρ†Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π½ΠΈΠΊ 

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ использовали ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово preserve, Ρ€Π°Π½Π΅Π΅ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ значСния Π½Π΅ Ρ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ, ΠΈ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ добавляСтся ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

Массив Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²

Π”ΠΎ сих ΠΏΠΎΡ€ ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ массив, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉ значСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ объявим массив ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΈ сохраним Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ String, Date, Long, Integer, Π² ΠΎΠ΄Π½ΠΎΠΌ массивС.

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

 ПодмассивVariant ()
Dim arrayData (3) ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
arrayData (0) = "Π’ΠΈΠΊΡ€Π°ΠΌ Π’ΠΈΠΊΡ€Π°Π½Ρ‚"
arrayData (1) = 411234567890 #
arrayData (2) = 38
arrayData (3) = "06-09-1972"
MsgBox "ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ информация ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ΅" & arrayData (0) & "is" & "НомСр Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°" & arrayData (1) & ", Id
"& arrayData (2) &", DOB "& arrayData (3)
ΠšΠΎΠ½Ρ†Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π½ΠΈΠΊ 

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ массива VBA

Π’ массивах VBA Π΅ΡΡ‚ΡŒ нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.

Рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

# 1) Массив

Π”Π°Π²Π°ΠΉΡ‚Π΅ объявим ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ ΠΊΠ°ΠΊ массив. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π² массив, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ARRAY , ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ массива ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, содСрТащий значСния, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ запятыми. Π­Ρ‚ΠΈ значСния Π½Π°Π·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ элСмСнт массива.

 ΠŸΠΎΠ΄Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Array ()
Dim varData ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
varData = Array ("Mon Bel", "+61 112334123", 567, "06-09-1972")
MsgBox "ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ информация ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ΅" & varData (0) & "is" & "НомСр Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°" & varData (1) & ", Id" & varData (2) & ", DOB" & varData (3)
ΠšΠΎΠ½Ρ†Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π½ΠΈΠΊ 

Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ индСкса, поэтому Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ значСния ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ varData (0) varData (2) varData (3).

# 2) Π‘Ρ‚Π΅Ρ€Π΅Ρ‚ΡŒ

Π­Ρ‚Π° функция сотрСт всС значСния, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ для массива фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΠΈ освободит мСсто Π² памяти для динамичСского массива.

Бинтаксис: Π‘Ρ‚Π΅Ρ€Π΅Ρ‚ΡŒ имя массива

Π‘Ρ‚ΠΈΡ€Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.

  • Для фиксированного числа: ВсС значСния ΡΠ±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° ноль.
  • Для фиксированного строкового Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…: ВсС значСния ΡΠ±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π΄ΠΎ Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹.
  • Для динамичСского массива: ΠžΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ‚ ΠΏΠ°ΠΌΡΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ массивом.

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

 Sub eraseExample ()
Dim NumArray (3) ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
Dim decArray (2) ΠΊΠ°ΠΊ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ
Dim strArray (2) ΠΊΠ°ΠΊ строка

NumArray (0) = 12345
decArray (1) = 34,5
strArray (1) = "Ѐункция стирания"

Π”ΠΈΠΌ DynaArray ()
ReDim DynaArray (3)

MsgBox "ЗначСния ΠΏΠ΅Ρ€Π΅Π΄ стираниСм" & (NumArray (0)) & "," & (decArray (1)) & "," & (strArray (1))

Π‘Ρ‚Π΅Ρ€Π΅Ρ‚ΡŒ NumArray
Π‘Ρ‚Π΅Ρ€Π΅Ρ‚ΡŒ decArray
Π‘Ρ‚Π΅Ρ€Π΅Ρ‚ΡŒ strArray
Erase DynaArray 'ΠžΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚Π΅ ΠΏΠ°ΠΌΡΡ‚ΡŒ

'ВсС значСния ΡƒΠ΄Π°Π»Π΅Π½Ρ‹.MsgBox "ЗначСния послС стирания" & NumArray (0) & "," & decArray (1) & "," & strArray (1)
ΠšΠΎΠ½Ρ†Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π½ΠΈΠΊ 

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΄ΠΎ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ стирания

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ послС использования Π‘Ρ‚Π΅Ρ€Π΅Ρ‚ΡŒ

# 3) IsArray

Π­Ρ‚Π° функция ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния, являСтся Π»ΠΈ данная входная пСрСмСнная массивом ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Он Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ истину, Ссли ввСдСнная пСрСмСнная истинна, ΠΈΠ½Π°Ρ‡Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ лоТь.

Бинтаксис: IsArray (имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ)

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

 Sub isArrayTest ()
Dim arr1, arr2 ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
arr1 = Массив (Β«Π―Π½Π²Β», Β«Π€Π΅Π²Β», Β«ΠœΠ°Ρ€Β»)
arr2 = "12345"

MsgBox ("ЯвляСтся Π»ΠΈ arr1 массивом:" & IsArray (arr1))
MsgBox ("ЯвляСтся Π»ΠΈ arr2 массивом:" & IsArray (arr2))
ΠšΠΎΠ½Π΅Ρ† 

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Msgbox

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ сообщСния

# 4) Lbound

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ самый Π½ΠΈΠΆΠ½ΠΈΠΉ индСкс массива, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Lbound.

Бинтаксис: LBound (ArrayName, [Dimension])

ArrayName - это имя массива.

Π Π°Π·ΠΌΠ΅Ρ€ - это Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ цСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Если массив ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, для ΠΊΠ°ΠΊΠΎΠ³ΠΎ измСрСния Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Lbound.

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

 Sub lboundTest ()
Dim Result1, Result2, Result3
Dim ArrayValue (ΠΎΡ‚ 1 Π΄ΠΎ 10, ΠΎΡ‚ 5 Π΄ΠΎ 15, ΠΎΡ‚ 10 Π΄ΠΎ 20) 'ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ массива.
Вусклый массив Π±Π΅Π· связи (10)
Result1 = LBound (ArrayValue, 1) 'Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 1.Result2 = LBound (ArrayValue, 3) 'Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 10.
Result3 = LBound (Массив Π±Π΅Π· привязки)
MsgBox Β«Π‘Π°ΠΌΡ‹ΠΉ Π½ΠΈΠ·ΠΊΠΈΠΉ индСкс Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ массивС» & Result1 & Β«Π‘Π°ΠΌΡ‹ΠΉ Π½ΠΈΠ·ΠΊΠΈΠΉ индСкс Π² 3-ΠΌ массивС» & Result2 &
 Β«Π‘Π°ΠΌΡ‹ΠΉ Π½ΠΈΠ·ΠΊΠΈΠΉ индСкс Π² массивС Π±Π΅Π· привязки» & Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚3
ΠšΠΎΠ½Ρ†Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π½ΠΈΠΊ 

# 5) Π£Π±ΡƒΠ½Π΄

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ индСкс массива, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ubound.

Бинтаксис: UBound (ArrayName, [Dimension])

ArrayName - это имя массива.

Π Π°Π·ΠΌΠ΅Ρ€ - это Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ цСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Если массив ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ubound.

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

 Sub UboundTest ()
Dim Result1, Result2, Result3
Dim ArrayValue (ΠΎΡ‚ 1 Π΄ΠΎ 10, ΠΎΡ‚ 5 Π΄ΠΎ 15, ΠΎΡ‚ 10 Π΄ΠΎ 20) 'ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ массива.
Вусклый массив Π±Π΅Π· связи (10)
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚1 = UBound (ArrayValue, 1)
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚2 = UBound (ArrayValue, 3)
Result3 = UBound (ArraywithoutUbound)
MsgBox Β«Π‘Π°ΠΌΡ‹ΠΉ Π½ΠΈΠ·ΠΊΠΈΠΉ индСкс Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ массивС» & Result1 & Β«Π‘Π°ΠΌΡ‹ΠΉ Π½ΠΈΠ·ΠΊΠΈΠΉ индСкс Π² 3-ΠΌ массивС» &
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚2 ΠΈ Β«Π‘Π°ΠΌΡ‹ΠΉ Π½ΠΈΠ·ΠΊΠΈΠΉ индСкс Π² массивС Π±Π΅Π· привязки» ΠΈ Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚3
ΠšΠΎΠ½Ρ†Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π½ΠΈΠΊ 

# 6) Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив с количСством подстрок, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ†Π΅Π»ΠΎΠΉ строки.

Бинтаксис: Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ (Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, [Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ, [ΠΏΡ€Π΅Π΄Π΅Π», [ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ]]])

  • Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅: Π­Ρ‚ΠΎ вся строка, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для создания подстрок.
  • Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ, Π±ΡƒΠ΄ΡƒΡ‚ созданы подстроки. Если это Π½Π΅ упомянуто, Ρ‚ΠΎ Π² качСствС раздСлитСля рассматриваСтся ΠΏΡ€ΠΎΠ±Π΅Π».
  • ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅: ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… подстрок.
  • Π‘Ρ€Π°Π²Π½ΠΈΡ‚ΡŒ: ПослС создания подстроки Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ сравнСния для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΊΠ°ΠΊ - ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ 3.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, функция раздСлСния Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ всю строку Π½Π° подстроки Π½Π° основС раздСлитСля. Но ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ упомянули ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ 3, поэтому подстроки Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ послС Π»ΠΈΠΌΠΈΡ‚Π° 3. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, послСдний Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ - Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½.

 Sub splitExample ()
Dim MyString ΠΊΠ°ΠΊ строка
Вусклый Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ () Π² Π²ΠΈΠ΄Π΅ строки
Dim DisplayText As String
MyString = "Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-VBA-Split"
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ (MyString, "-", 3)
MsgBox Result (0) & vbNewLine & Result (1) & vbNewLine & Result (2) & vbNewLine & Result (3)
ΠšΠΎΠ½Ρ†Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π½ΠΈΠΊ 

# 7) ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ

Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΡŽ, Join создаст ΠΎΠ΄Π½Ρƒ строку, объСдинив нСсколько подстрок.

Бинтаксис: Join (исходный массив, [Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ])

Sourcearray: ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив строк, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π² ΠΎΠ΄Π½Ρƒ.

Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ: Π£ΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки ΠΏΡ€ΠΈ объСдинСнии.

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

 Sub joinExample ()
Вусклый Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π²ΠΈΠ΄Π΅ строки
Dim dirarray (ΠΎΡ‚ 0 Π΄ΠΎ 2) ΠΊΠ°ΠΊ строка
dirarray (0) = "D:"
dirarray (1) = "SoftwareTestingHelp"
dirarray (2) = "ΠœΠ°ΡΡΠΈΠ²Ρ‹"
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΡΡ (dirarray, "\")
MsgBox Β«Π”Π°Ρ‚Π° послС присоСдинСния» ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
ΠšΠΎΠ½Ρ†Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π½ΠΈΠΊ 

ВсС 3 значСния ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ, ΠΈ \ помСщаСтся ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ словом, ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ \ Π² качСствС раздСлитСля.

# 8) Π€ΠΈΠ»ΡŒΡ‚Ρ€

Π€ΠΈΠ»ΡŒΡ‚Ρ€ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π°ΠΌ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ совпадСниС Π² массивС. На основС ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΎ подмноТСство массива строк.

Бинтаксис: Π€ΠΈΠ»ΡŒΡ‚Ρ€ (исходный массив, соотвСтствиС, [Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, [ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ]])

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

 ΠŸΠΎΠ΄Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ()
Dim Mystring ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
Mystring = Array («ВСстированиС ПО», Β«Π‘ΠΏΡ€Π°Π²ΠΊΠ° ΠΏΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽΒ», Β«Π‘ΠΏΡ€Π°Π²ΠΊΠ° ΠΏΠΎ ПО»)
filterString = Π€ΠΈΠ»ΡŒΡ‚Ρ€ (Mystring, Β«ΠΏΠΎΠΌΠΎΡ‰ΡŒΒ»)
MsgBox «НайдСно» ΠΈ UBound (Mystring) - LBound (Mystring) + 1 & «слова, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ критСриям»
ΠšΠΎΠ½Ρ†Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π½ΠΈΠΊ 

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ выполняСтся поиск слова Β«helpΒ» Π²ΠΎ всСй строкС массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°.

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы

Q # 1) Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ массива Π² VBA?

ΠžΡ‚Π²Π΅Ρ‚: Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ массива, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ubound. Π­Ρ‚Π° функция даст Π½Π°ΠΌ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ индСкс ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ массива.

Q # 2) Как ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ массив Π² VBA?

ΠžΡ‚Π²Π΅Ρ‚: ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.

ВусклоС имя массива (ниТняя Π³Ρ€Π°Π½ΠΈΡ†Π° - вСрхняя Π³Ρ€Π°Π½ΠΈΡ†Π°) ΠΊΠ°ΠΊ DataType

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Dim Myarray (ΠΎΡ‚ 0 Π΄ΠΎ 2) ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число

ОбъявлСн Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.

Dim ArrayName (ΠΎΡ‚ FirstIndex Π΄ΠΎ LastIndex, ΠΎΡ‚ FirstIndex Π΄ΠΎ LastIndex) ΠΊΠ°ΠΊ DataType.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ВусклыС ΠΌΠ΅Ρ‚ΠΊΠΈ (ΠΎΡ‚ 1 Π΄ΠΎ 3, ΠΎΡ‚ 0 Π΄ΠΎ 2) Π² Π²ΠΈΠ΄Π΅ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа

Q # 3) Как ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π² массив?

ΠžΡ‚Π²Π΅Ρ‚: ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ транспонирования для прСобразования Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π² массив. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ создаст Mys [10]

 Sub ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ()
Вусклый мыс ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
Mys = Application.Transpose (Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("A1: A10"))
ΠšΠΎΠ½Ρ†Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π½ΠΈΠΊ 

Q # 4) Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ массива Π² VBA?

ΠžΡ‚Π²Π΅Ρ‚: Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Π½Ρ‹ΠΉ массив ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ всС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… для своСго индСкса i.Π΅. Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎΠΌ массивС.

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

Dim arrayData (3) As Variant
arrayData (0) = Β«Vikas VipalΒ»
arrayData (1) = 411234567890 #

Q # 5) Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ опционная Π±Π°Π·Π°?

ΠžΡ‚Π²Π΅Ρ‚: Π­Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для объявлСния Π½ΠΈΠΆΠ½Π΅Π³ΠΎ индСкса массива ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ запускС модуля. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½ΠΈΠΆΠ½ΠΈΠΉ индСкс Ρ€Π°Π²Π΅Π½ 0, Ссли Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ ΠΎΠΏΡ†ΠΈΡŽ Base 1 Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ модуля, Ρ‚ΠΎΠ³Π΄Π° для всСх массивов Π½ΠΈΠΆΠ½ΠΈΠΉ индСкс ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ 1.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этом руководствС ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ массивы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² VBA, ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ, Ρ‡Π΅ΠΌ массивы ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. ΠœΡ‹ исслСдовали ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ обсудили фиксированныС ΠΈ динамичСскиС массивы.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΠΎΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ = >> Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ VBA

Бпособы измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива Π²ΠΎ врСмя выполнСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ сохранСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ redim preserve Π±Ρ‹Π»ΠΈ обсуТдСны с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ.НаконСц, ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Array, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΌ Π² Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

=> ΠžΡ‚ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅ Π’Π‘Π• руководства ΠΏΠΎ VBA здСсь

Excel VBA Array: ПолноС руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ (ΠΈΠ»ΠΈ ΠΈΠ·ΡƒΡ‡Π°Π»ΠΈ) Visual Basic для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π²Ρ‹, вСроятно, Π·Π½Π°Π΅Ρ‚Π΅ ΠΎ ваТности Ρ‚Π²Π΅Ρ€Π΄Ρ‹Ρ… Π·Π½Π°Π½ΠΈΠΉ ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Ρ‚Π΅ΠΌΠ°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠΈ. Π― написал ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ ΠΈ ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ руководства ΠΏΠΎ нСскольким ΠΈΠ· этих Ρ‚Π΅ΠΌ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ 2:

Π’ этом руководствС ΠΏΠΎ VBA я ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΡƒΡΡŒ Π½Π° Ρ‚Π΅ΠΌΠ΅, которая тСсно связана с Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹ΠΌ:

Excel VBA-массивы .

Π’Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ€Π°Π΄Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ, Ссли Ρƒ вас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ знания ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Ρ‚ΠΈΠΏΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (я ΠΎΡΠ²Π΅Ρ‰Π°ΡŽ эти Ρ‚Π΅ΠΌΡ‹ Π² сообщСниях Π±Π»ΠΎΠ³Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я ΡΡΡ‹Π»Π°ΡŽΡΡŒ Π²Ρ‹ΡˆΠ΅), Ρƒ вас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ знания, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈ осваиваСм Ρ‚Π΅ΠΌΡƒ массивов.

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², массивы - это (Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ²) ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ€Π°Π±ΠΎΡ‚Π° с массивами VBA (Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ стСпСни) ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ. Однако массивы ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ особыми характСристиками ΠΈ функциями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Π’Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ интСрСсно, Π·Π°Ρ‡Π΅ΠΌ Π²Π°ΠΌ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ массивах Excel VBA, Ссли Π²Ρ‹ ΡƒΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ.

ΠŸΡ€ΠΎΡ‰Π΅ говоря:

Π’Ρ‹, , Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с массивами Excel VBA, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ , ΠΏΠΎΠΌΠΈΠΌΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… прСимущСств (ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² Excel 2016 VBA ΠΈ макросах ), ΠΎΠ½ΠΈ:

  • ΠŸΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ связанныС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Π² Ρ†Π΅Π»ΠΎΠΌ, ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.
  • ΠŸΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ процСсс получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ….
  • ΠœΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ваш ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ простым Π² обслуТивании.
  • ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ VBA.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ мощности массивов VBA прСдоставлСн Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ Π ΠΈΡ‡Π°Ρ€Π΄ΠΎΠΌ ΠœΡΠ½ΡΡ„ΠΈΠ»Π΄ΠΎΠΌ. Π’ ΠΊΠ½ΠΈΠ³Π΅ Β« ОсвоСниС VBA для Microsoft Office 2016 Β» ΠœΡΠ½ΡΡ„ΠΈΠ»Π΄ описываСт массивы ΠΊΠ°ΠΊ «своСго Ρ€ΠΎΠ΄Π° супСрпСрСмСнныС» ΠΈΠ»ΠΈ Β«ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π° стСроидах».

Моя Ρ†Π΅Π»ΡŒ Π² этом руководствС ΠΏΠΎ VBA - ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²Π°ΠΌ ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰Π΅Π΅ ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Ρ‚Π΅ΠΌΡƒ массивов Excel VBA, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ позволяСт Π²Π°ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массивы прямо сСйчас. .Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ содСрТания пСрСчислСны основныС Ρ€Π°Π·Π΄Π΅Π»Ρ‹ этого сообщСния Π² Π±Π»ΠΎΠ³Π΅. НС ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π΅ΠΉ вас Ρ‚Π΅ΠΌΠ΅.

Π­Ρ‚ΠΎ руководство ΠΏΠΎ массивам Excel VBA сопровоТдаСтся ΠΊΠ½ΠΈΠ³ΠΎΠΉ Excel, содСрТащСй Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ макросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅, , ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ бСсплатный доступ ΠΊ этому ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ ΠΊΠ½ΠΈΠ³ΠΈ, подписавшись Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Π±ΡŽΠ»Π»Π΅Ρ‚Π΅Π½ΡŒ Power Spreadsheets .

БСйчас:

Π₯отя я ΡƒΠΆΠ΅ прСдставил Π±Π°Π·ΠΎΠ²ΠΎΠ΅ описаниС массивов Π²ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΈΠΈ Π²Ρ‹ΡˆΠ΅, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ погруТСния Π² тСму…

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ массив Excel VBA

Богласно Π¦Π΅Π½Ρ‚Ρ€Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Microsoft, массив:

Набор ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ индСксированных элСмСнтов, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ….ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ индСкса. ИзмСнСния, внСсСнныС Π² ΠΎΠ΄ΠΈΠ½ элСмСнт массива, Π½Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ элСмСнты.

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Excel VBA Programming for Dummies Π³ΡƒΡ€Ρƒ Excel Π”ΠΆΠΎΠ½ Π£ΠΎΠΊΠ΅Π½Π±Π°Ρ… Π΄Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ массива, заявляя, Ρ‡Ρ‚ΠΎ:

Массив - это Π³Ρ€ΡƒΠΏΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΎΠ΄Π½ΠΎ имя.

Π­Ρ‚ΠΈ Π΄Π²Π° опрСдСлСния Π΄Π°ΡŽΡ‚ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ прСдставлСниС ΠΎΠ± основных характСристиках массива VBA, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ для Ρ†Π΅Π»Π΅ΠΉ этого руководства.Π­Ρ‚ΠΈ основныС характСристики массива VBA:

  • Для Ρ†Π΅Π»Π΅ΠΉ Visual Basic для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ массив - это, ΠΏΠΎ сути, Π³Ρ€ΡƒΠΏΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… .
  • Π“Ρ€ΡƒΠΏΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… массив, ΠΈΠΌΠ΅Π΅Ρ‚ (i) с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ (ii) с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ….
  • ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ массив, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ проиндСксированы . Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ индСкса.
  • Π’Ρ‹, , ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ элСмСнт массива , Π½Π΅ измСняя Π΄Ρ€ΡƒΠ³ΠΈΠ΅ элСмСнты.

    Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Π² ОсвоСниС VBA для Microsoft Office 2016 , Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с сразу со всСм массивом (всСми Π΅Π³ΠΎ элСмСнтами)

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Ρ… Ρ‚Π΅ΠΌ этого ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ пособия:

Как ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ массив Excel VBA

Как описано Π² ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Excel VBA для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ² , Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ всСгда ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ массив ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π³ΠΎ использованиСм.

Π‘ ΠΎΠ±Ρ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ массивы Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ .Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ массив сам ΠΏΠΎ сСбС являСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Как я объясняю Π² ΠΌΠΎΠ΅ΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ руководствС ΠΏΠΎ VBA ΠΎΠ± объявлСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π²Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ 4 ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слова для явного объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ :

  1. Dim.
  2. БтатичСский.
  3. Public.
  4. Частный.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ 4 ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° для объявлСния массива . Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ссли Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² VBA, Ρƒ вас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ знания, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для объявлСния массивов.

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ сходство Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ объявлСнии массивов Π²Ρ‹, , ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΡ… Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… (Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π²Ρ‹ это Π΄Π΅Π»Π°Π΅Ρ‚Π΅ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ).

На самом Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ основноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ объявлСниСм ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ (скалярной) ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ массива:

Когда Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ массив, Π²Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива . Когда Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ ΡΠΊΠ°Π»ΡΡ€Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ (Π½Π΅ массив), Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€.

Как слСдствиС Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ, элСмСнты 4, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ создании ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° для объявлСния массива , ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

  • Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ β„– 1: ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ для объявлСния массива.

    Как я ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π» Π²Ρ‹ΡˆΠ΅, для этих Ρ†Π΅Π»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ 4 Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слова: (i) Dim, (ii) Static, (iii) Public ΠΈ (iv) Private.

  • Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ 2: Имя массива.
  • Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ β„– 3: Π Π°Π·ΠΌΠ΅Ρ€ массива.

    Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ, Ρ‡Π΅ΠΌ этот элСмСнт отличаСтся Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ фиксированный ΠΈΠ»ΠΈ динамичСский массив.

  • Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ β„– 4: Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… для массива.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉ массив с использованиСм пСрСчислСнных Π²Ρ‹ΡˆΠ΅ элСмСнтов, ΠΈΠΌΠ΅Π΅Ρ‚ (ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ) ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ структуру:

Declaring_Keyword Array_Name ([Array_Size]) [As Data_Type]

Items Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках ([]) ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ. Π’ этом заявлСнии:

ΠŸΡƒΠ½ΠΊΡ‚Ρ‹ β„– 1 (Declaring_Keyword), β„– 2 (Array_Name) ΠΈ β„– 4 (Data_Type) практичСски Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈ объявлСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² VBA.

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ β„– 3 (Ρ€Π°Π·ΠΌΠ΅Ρ€_массива), ΠΊΠ°ΠΊ ΠΈ оТидалось Π²Ρ‹ΡˆΠ΅, являСтся основным Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ объявлСниСм скалярной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ массива.Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ этой ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ объявлСниСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ массива Π΅ΡΡ‚ΡŒ 4 Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… вопроса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ объявлСнии массива (ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с объявлСниСм скалярной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ):

  • Π’Π΅ΠΌΠ° β„– 1: Π Π°Π·ΠΌΠ΅Ρ€ массива ΠΈ трСбования ΠΊ памяти.
  • Π’Π΅ΠΌΠ° β„– 2: ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы.
  • Π’Π΅ΠΌΠ° β„– 3: ЀиксированныС ΠΈ динамичСскиС массивы.
  • Π’Π΅ΠΌΠ° β„– 4: НиТниС Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ массива.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ каТдая ΠΈΠ· этих Ρ‚Π΅ΠΌ.Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с рассмотрСния:

Π Π°Π·ΠΌΠ΅Ρ€ массива, Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ трСбования ΠΊ памяти

Как я объяснил Π²Ρ‹ΡˆΠ΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… массива, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ Π΅Π³ΠΎ . Для ΠΎΠ±Ρ‰ΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ пояснСния ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽ Π² этом руководствС.

Как слСдствиС этого, всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… для массива, Visual Basic для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ .Однако Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ массивы с использованиСм Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… (ΠΊΡ€ΠΎΠΌΠ΅ Variant).

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

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ· этого ΠΏΡ€Π°Π²ΠΈΠ»Π° являСтся , Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ массив содСрТал Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… массива Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Variant . Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ, ΠΊΠ°ΠΊ объяснил Π ΠΈΡ‡Π°Ρ€Π΄ ΠœΡΠ½ΡΡ„ΠΈΠ»Π΄ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ОсвоСниС VBA для Microsoft Office 2016 :

Массив с Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… Variant ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ нСсколько ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… дСйствиях, ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ трСбования ΠΊ Π½ΠΎΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌΡƒ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ .Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° Π΄Π°Π΅Ρ‚ ΠΎΠ±Ρ‰Π΅Π΅ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, сколько Π±Π°ΠΉΡ‚ΠΎΠ² памяти ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ трСбуСтся для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… основных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… VBA:

68 9036 9036 Π”Π²ΠΎΠΉΠ½ΠΎΠΉ
Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… элСмСнта Π‘Π°ΠΉΡ‚
Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ (числовой) 16
Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ (строка) 22 + Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ строки
Π‘Π°ΠΉΡ‚ 1
ЛогичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 2
Π’Π°Π»ΡŽΡ‚Π° Π”Π°Ρ‚Π°3 8

8
Π¦Π΅Π»ΠΎΠ΅ число 2
Π”Π»ΠΈΠ½Π½Ρ‹ΠΉ 4
ΠžΠ±ΡŠΠ΅ΠΊΡ‚ 4
ΠžΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΉ 4 пСрСмСнная Π΄Π»ΠΈΠ½Π° 103567

Π’Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ строкС

Π‘Ρ‚Ρ€ΠΎΠΊΠ° (фиксированной Π΄Π»ΠΈΠ½Ρ‹) Π’Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ строкС

900 06 Однако ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ значСния Π½Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ всСй ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ для понимания Ρ‚ΠΎΠ³ΠΎ, сколько памяти трСбуСтся ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ массиву.Π’ΠΎΡ‡Π½Π΅Π΅:

ΠŸΡ€ΠΈ вычислСнии количСства Π±Π°ΠΉΡ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… массивом, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ 2 Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°:

  • Π€Π°ΠΊΡ‚ΠΎΡ€ β„– 1: Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… массива.
  • Π€Π°ΠΊΡ‚ΠΎΡ€ β„– 2: ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов Π² массивС.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива опрСдСляСтся ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ (i) количСства Π±Π°ΠΉΡ‚ΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ (ii) количСства элСмСнтов массива. Π’ матСматичСских Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ…:

Π±Π°ΠΉΡ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… массивом = (количСство элСмСнтов Π² массивС) x (Π±Π°ΠΉΡ‚Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… массива)

Богласно Π¦Π΅Π½Ρ‚Ρ€Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Microsoft (Π½Π° Π²Π΅Π±-страницС я ΡΡΡ‹Π»Π°ΡŽΡΡŒ Π½Π° Π²Ρ‹ΡˆΠ΅), ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива VBA зависит ΠΎΡ‚ Π΄Π²ΡƒΡ… основных Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ²: :

  • Π’Π°ΡˆΠ° опСрационная систСма.
  • Доступная ΠΏΠ°ΠΌΡΡ‚ΡŒ.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ выполняСтся ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ массив, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ объСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, доступной Π² систСмС, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ, ΠΊΠ°ΠΊ поясняСт Microsoft, Β«Π΄Π°Π½Π½Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Ρ‹ ΠΈ записаны Π½Π° диск».

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ вас Π΅ΡΡ‚ΡŒ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ взаимосвязи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ массива, Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ трСбованиями ΠΊ памяти, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ тСмС…

ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы VBA

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Dim - это сокращСниС ΠΎΡ‚ Β«DimensionΒ» .Как я Ρ†ΠΈΡ‚ΠΈΡ€ΡƒΡŽ Π² сообщСнии ΠΎΠ± объявлСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… VBA, СдинствСнноС использованиС Dim Π² Π±ΠΎΠ»Π΅Π΅ старых вСрсиях BASIC Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π»ΠΎΡΡŒ Π² объявлСнии Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² массива.

ΠœΠ°ΡΡΠΈΠ²Ρ‹ VBA ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄ΠΎ 60 ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ . Однако Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π²Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с (максимум) с Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами .

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ случай: - ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив . ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ΄Π½Ρƒ строку элСмСнтов.На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΈΠ· 8 элСмСнтов.

Если Π²Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅, Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив . Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ‚Π°ΠΊΠΎΠΌ массивС ΠΊΠ°ΠΊ ΠΎ сСткС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ элСмСнты располоТСны Π² строках ΠΈ столбцах. На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив с 16 элСмСнтами, ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π² 4 строки ΠΈ 4 столбца.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ Π² этом ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ случаС I ссылаСтся Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ 2 числа .ΠŸΠ΅Ρ€Π²ΠΎΠ΅ число ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² строкС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ измСрСния (Π½Π° этом ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ - строка), Π³Π΄Π΅ располоТСн элСмСнт. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ число относится ΠΊ ΠΌΠ΅ΡΡ‚ΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΈ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС столбцС). Π― объясняю Ρ‚Π΅ΠΌΡƒ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ элСмСнтам массива Π½ΠΈΠΆΠ΅.

Если Π²Ρ‹ Π΅Ρ‰Π΅ Ρ€Π°Π· Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив . Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ этот массив Π² Π²ΠΈΠ΄Π΅ ΠΊΡƒΠ±Π°.

Π― Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ массивов ΠΈΠ· 4 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ.Π’ любом случаС Ρ†Π΅Π»ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ изобраТСния - просто Π΄Π°Ρ‚ΡŒ Π²Π°ΠΌ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ массив.

Π’ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ Visual Basic массив выглядит ΠΈΠ½Π°Ρ‡Π΅. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… я ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‰ΠΈΡ… ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы.

ЀиксированныС ΠΈ динамичСскиС массивы VBA

Как я ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π» Π²Ρ‹ΡˆΠ΅, основноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ объявлСнии массива (ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ со скалярной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ), Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива.

Однако Π΅ΡΡ‚ΡŒ 2 способа опрСдСлСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива :

  • Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ β„– 1: Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ получаСтся массив фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π° (фиксированный массив).
  • Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ β„– 2: Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива ΠΏΡ€ΠΈ запускС ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ прилоТСния. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ этой ΠΎΠΏΡ†ΠΈΠΈ являСтся динамичСский массив.

ИспользованиС динамичСских массивов практичСски Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Ρƒ фиксированных массивов.ОсновноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ фиксированныС массивы Β«Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Β».

Как я объяснил Π²Ρ‹ΡˆΠ΅, основная структура ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для объявлСния массива, выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Declaring_Keyword Array_Name ([Array_Size]) As [Data_Type]

Π― объясняю элСмСнты β„– 1 (Declaring_Keyword), # 2 (Array_Name) ΠΈ # 4 (Data_Type) Π²Ρ‹ΡˆΠ΅.

Π― Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΡŽ ΠΏΡƒΠ½ΠΊΡ‚ 3 (Ρ€Π°Π·ΠΌΠ΅Ρ€_массива) Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ…. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с рассмотрСния…

Как ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ фиксированный ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Excel VBA

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π²Ρ‹, , устанавливаСтС Ρ€Π°Π·ΠΌΠ΅Ρ€ измСрСния массива (Array_Size Π² заявлСнии объявлСния массива Π²Ρ‹ΡˆΠ΅) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ 3 ΡˆΡ‚ .:

  • β„– 1: ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ порядковый Π½ΠΎΠΌΠ΅Ρ€.
  • Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ β„– 2: ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Β«ΠšΠΎΠΌΡƒΒ».
  • ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ β„– 3: ПослСдний порядковый Π½ΠΎΠΌΠ΅Ρ€.

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, структуру ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ для объявлСния массива , ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ:

Declaring_Keyword Array_Name (First_Index_ # To Last_Index_ #) [As Data_Type]

Π­Ρ‚ΠΎ, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, самый простой объявлСниС массива, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

ВсС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ объявлСния массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽ Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π² это руководство ΠΏΠΎ VBA, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Dim.ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ, ΠΊΠ°ΠΊ я объяснял Π²Ρ‹ΡˆΠ΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ (тСорСтичСски) Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Private, Public ΠΈΠ»ΠΈ Static. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я дСлаю Π² этом сообщСнии Π² Π±Π»ΠΎΠ³Π΅, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ относятся ΠΈ ΠΊ случаям, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ утвСрТдСниями.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° 2 ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° :

  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€ # 1: Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ массив ΠΈΠ· 10 Ρ†Π΅Π»Ρ‹Ρ… чисСл (элСмСнты ΠΎΡ‚ 0 Π΄ΠΎ 9):

    Dim myArray (ΠΎΡ‚ 0 Π΄ΠΎ 9) ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число

  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€ β„– 2: Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ массив ΠΈΠ· 20 строк (элСмСнты ΠΎΡ‚ 0 Π΄ΠΎ 19):

    Dim myArray (ΠΎΡ‚ 0 Π΄ΠΎ 19) As String

Π‘Ρ‚Ρ€ΠΎΠ³ΠΎ говоря, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ . массива, ΡƒΠΊΠ°Π·Π°Π² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΠΎΠΌΠ΅Ρ€ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ индСкса .Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ массив, опуская:

  • Item # 1: ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ индСкса.
  • Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ β„– 2: ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Β«ΠšΠΎΠΌΡƒΒ».

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ выглядят 2 ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π²Ρ‹ΡˆΠ΅, Ссли я объявлю ΠΈΡ… Π±Π΅Π· Π½ΠΈΠΆΠ½Π΅Π³ΠΎ индСкса:

  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€ β„– 1: 10-цСлочислСнный массив.

    Dim myArray (9) As Integer

  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€ β„– 2: Массив, состоящий ΠΈΠ· 20 строк.

    Dim myArray (19) As String

Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Visual Basic для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΆΠ½ΠΈΠΉ Π½ΠΎΠΌΠ΅Ρ€ индСкса Ρ€Π°Π²Π΅Π½ 0 (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ) ΠΈΠ»ΠΈ 1 (Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Option Base 1) . Π― объясню эту Ρ‚Π΅ΠΌΡƒ Π½ΠΈΠΆΠ΅. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ 2 ΠΏΡƒΠ½ΠΊΡ‚Π°:

  • # 1: ΠœΠ°ΡΡΠΈΠ²Ρ‹, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΈΠΆΠ½ΠΈΠΉ индСкс 0.
  • # 2: Π­Ρ‚ΠΎΡ‚ способ объявлСния массива Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ количСство элСмСнтов массива.Он скорСС ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ массива.

Π’ любом случаС, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°Ρ‡Π½Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с массивами, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ, Ρ‚Π°ΠΊ ΠΈ Π½ΠΈΠΆΠ½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΏΡ€ΠΈ объявлСнии массива обСспСчиваСт Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ, Ρ‡Π΅ΠΌ использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Option Base. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях пропуск Π½ΠΈΠΆΠ½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ массива ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкам.

Π‘Ρ€Π΅Π΄ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, ΠΏΠΎ этим ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ я Π»ΠΈΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ, Ρ‚Π°ΠΊ ΠΈ ниТнюю Π³Ρ€Π°Π½ΠΈΡ†Ρƒ массива , Π° Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ Option Base ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ниТнюю Π³Ρ€Π°Π½ΠΈΡ†Ρƒ массива.ЭкспСрты VBA, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π§ΠΈΠΏ ΠŸΠΈΡ€ΡΠΎΠ½ (ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ я Ρ†ΠΈΡ‚ΠΈΡ€ΡƒΡŽ Π²Ρ‹ΡˆΠ΅), вСроятно, согласны с этим ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ. МнСниС Π§ΠΈΠΏΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ, пСрСйдя ΠΏΠΎ ссылкС Π²Ρ‹ΡˆΠ΅, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ это…

ΠžΡ‡Π΅Π½ΡŒ плохая ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования - ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ниТнюю Π³Ρ€Π°Π½ΠΈΡ†Ρƒ ΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ.

Как ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ фиксированный ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Excel VBA

ЗаявлСниС для объявлСния фиксированного ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° инструкции, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Π²Ρ‹ΡˆΠ΅ для объявлСния ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива.

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ основноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ объявлСниСм ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ объявлСнии ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π²Ρ‹ раздСляСтС Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ запятыми (,) .

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, структура ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° , ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ для объявлСния массива с ## измСрСниями , ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пСрСписана ΠΊΠ°ΠΊ:

Declaring_Keyword Array_Name (Dimension1_First_Index_ # To Dimension1_Last_Index_ #, First Dimension2_First_Index_ # To Dimension_First_Index_ # To Dimension_Index_# # To Dimension ## _ Last_Index_ #) [As Data_Type]

Π”Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² объявлСний фиксированных ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов:

  • Example # 1: Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив с 25 Ρ†Π΅Π»Ρ‹Π΅ числа.Как я объяснял Π²Ρ‹ΡˆΠ΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎΠ± этом массивС ΠΊΠ°ΠΊ ΠΎ сСткС 5 x 5.

    Dim myArray (ΠΎΡ‚ 1 Π΄ΠΎ 5, ΠΎΡ‚ 1 Π΄ΠΎ 5) ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число

  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€ β„– 2: Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив с 1000 Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами. БлСдуя Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΉ Π²Ρ‹ΡˆΠ΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ это ΠΊΠ°ΠΊ ΠΊΡƒΠ± 10 x 10 x 10.

    Dim myArray (ΠΎΡ‚ 1 Π΄ΠΎ 10, ΠΎΡ‚ 1 Π΄ΠΎ 10, ΠΎΡ‚ 1 Π΄ΠΎ 10) ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число

  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€ β„– 3: Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив с 10000 Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами:

    Dim myArray (ΠžΡ‚ 1 Π΄ΠΎ 10, ΠΎΡ‚ 1 Π΄ΠΎ 10, ΠΎΡ‚ 1 Π΄ΠΎ 10, ΠΎΡ‚ 1 Π΄ΠΎ 10) Как Ρ†Π΅Π»ΠΎΠ΅ число

Как ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ динамичСского массива Excel VBA

Как я объяснил Π²Ρ‹ΡˆΠ΅, Ρ€Π°Π·ΠΌΠ΅Ρ€ динамичСских массивов измСняСтся ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ измСнСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ .Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами (ΠΊΠ°ΠΊ описано Π² Excel VBA Programming for Dummies ):

ДинамичСский массив Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π°Ρ€Π°Π½Π΅Π΅ установлСнного количСства элСмСнтов.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ 2 ΠΈΠ· основных ΠΏΡ€ΠΈΡ‡ΠΈΠ½ использования динамичСских массивов :

  • ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° β„– 1: Π’Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊΠΎΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива трСбуСтся Π΄ΠΎ выполнСния.
  • ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° β„– 2: Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ использованиС памяти, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, выдСляя ΠΎΡ‡Π΅Π½ΡŒ большиС массивы Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

ΠŸΡ€ΠΈ объявлСнии динамичСского массива Π²Ρ‹ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ количСство элСмСнтов (Array_Size Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ синтаксисС Π²Ρ‹ΡˆΠ΅) Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ объявлСния. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ оставитС ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобок пустым .

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ синтаксис ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° , ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‰Π΅Π³ΠΎ динамичСский массив , Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Declaring_Keyword Array_Name () [As Data_Type]

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ динамичСскиС массивы:

Dim myAr () As Integer

Dim myArray () As String

Однако Π²Ρ‹, , Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ динамичСский массив, ΠΏΠΎΠΊΠ° Π½Π΅ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅, сколько элСмСнтов Π² динамичСском массивС .Для этого Π²Ρ‹, , ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ReDim .

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ рассмотрим эту Ρ‚Π΅ΠΌΡƒ:

ReDim Dynamic Array

Основная Ρ†Π΅Π»ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ReDim - ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ Π²Π°ΠΌ Β«ΠΏΠ΅Ρ€Π΅Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ пространство хранСния» для динамичСских массивов. Как я ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π» Π²Ρ‹ΡˆΠ΅, Π²Ρ‹, , ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ReDim, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ количСство элСмСнтов Π² динамичСском массивС.

Π’Ρ‹, , Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ReDim для измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° фиксированного массива . Как ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Π² Π¦Π΅Π½Ρ‚Ρ€Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Microsoft, всякий Ρ€Π°Π·, когда…

Π’Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ массива, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±Ρ‹Π» явно ΡƒΠΊΠ°Π·Π°Π½ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… Private, Public ΠΈΠ»ΠΈ Dim, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка.

Основной синтаксис ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ReDim Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ стСпСни Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ синтаксису, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈ объявлСнии массива (Ρ‡Ρ‚ΠΎ я объяснил Π²Ρ‹ΡˆΠ΅). Π’ΠΎΡ‡Π½Π΅Π΅, базовая структура выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ReDim [Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ] Имя_массива (Π Π°Π·ΠΌΠ΅Ρ€_массива) [Как Π’ΠΈΠΏ_Π”Π°Π½Π½Ρ‹Ρ…]

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках ([]) ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ.

Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ содСрТит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ 5 элСмСнтов :

  • Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ β„– 1: ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово ReDim.

    Π― объясняю Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этого ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅.

  • НомСр ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ 2: Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово.

    Π­Ρ‚ΠΎΡ‚ элСмСнт Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Π― объясню Π΅Π³ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ характСристики Π½ΠΈΠΆΠ΅.

  • Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ β„– 3: Имя_массива.

    Π­Ρ‚ΠΎ имя массива, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅. Π― объясню этот элСмСнт Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Ρ‹ΡˆΠ΅, посвящСнном объявлСнию массивов VBA.

  • Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ β„– 4: Π Π°Π·ΠΌΠ΅Ρ€_массива.

    Π­Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива. ИмСнно этот элСмСнт Π²Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ ReDim.

    Π― объясняю, ΠΊΠ°ΠΊ Π²Ρ‹ ΡΠΏΡ€Π°Π²Π»ΡΠ΅Ρ‚Π΅ΡΡŒ с этим вопросом, начиная с этого Ρ€Π°Π·Π΄Π΅Π»Π°.

  • Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ β„– 5: Как Data_Type.

    Π― прСдставил этот ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ элСмСнт, объясняя, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ массив Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Ρ‚Π°ΠΌ даю, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ относятся ΠΊ случаям, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ReDim Statement.

    НСсмотря Π½Π° Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅, Π΅ΡΡ‚ΡŒ нСсколько особых ΠΏΡ€Π°Π²ΠΈΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ ReDim. Π― объясню это Π½ΠΈΠΆΠ΅.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ReDim ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·, сколько Π²Π°ΠΌ трСбуСтся , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π°ΡˆΠΈΡ… динамичСских массивов.

НСсмотря Π½Π° Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅, Π½Π΅ всСгда ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива . Π’ΠΎΡ‡Π½Π΅Π΅, всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ массив VBA Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ ΠΏΠΎ ссылкС, Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ этого массива Π²Π½ΡƒΡ‚Ρ€ΠΈ этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹.

Π”Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ особСнности ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ReDim, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ ΠΊΠΎΠ΄Π°:

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ReDim ΠΈ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ReDim для измСнСния массива Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ объявили Ρ€Π°Π½Π΅Π΅.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ· этого ΠΏΡ€Π°Π²ΠΈΠ»Π° ΡΠ²Π»ΡΡŽΡ‚ΡΡ случаи, ΠΊΠΎΠ³Π΄Π° массив содСрТится Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Variant . Π’ Ρ‚Π°ΠΊΠΈΡ… случаях для измСнСния Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ элСмСнт β„– 5 (As Data_Type).

Π”Π°ΠΆΠ΅ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° массив содСрТится Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Variant, Π²Ρ‹ Π½Π΅ смоТСтС ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… массива, Ссли Π² вашСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ ReDim ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Preserve. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ использовании ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Β«PreserveΒ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ допускаСтся.

НСзависимо ΠΎΡ‚ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива, содСрТащСгося Π² Variant ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ явно ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ.ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ объявлСния Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ вСрнСмся к…

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Preserve

Как ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Π² Excel 2016 VBA ΠΈ Macros , ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ReDim Β«ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚Β» массив, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, , ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ReDim стираСт всС Ρ€Π°Π½Π΅Π΅ сохранСнныС Π΄Π°Π½Π½Ρ‹Π΅ Π² элСмСнтах массива. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, эти старыС Π΄Π°Π½Π½Ρ‹Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ°ΡŽΡ‚ΡΡ.

Однако Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ уничтоТСния всСх Ρ€Π°Π½Π΅Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Preserve Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ ReDim.Как слСдуСт ΠΈΠ· названия, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Preserve для сохранСния Π΄Π°Π½Π½Ρ‹Ρ… Π² массивС .

ИспользованиС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Preserve связано с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ условиями. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ условия , ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… слСдуСт Π·Π½Π°Ρ‚ΡŒ :

  • УсловиС β„– 1: Как объяснялось Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ допускаСтся.
  • УсловиС β„– 2: Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ количСство ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ массива.
  • УсловиС β„– 3: Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послСднСго измСрСния массива.
  • УсловиС β„– 4: Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ массива.

    Если ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ с ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ниТнюю Π³Ρ€Π°Π½ΠΈΡ†Ρƒ массива. Если Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка.

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Π²Ρ‹ΡˆΠ΅ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌΡƒ (хотя это ΠΈ Π½Π΅ являСтся строго условиСм), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ (ΠΊΠ°ΠΊ описано Π² Excel 2016 VBA ΠΈ макросах ) ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Preserve ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ ваши прилоТСния VBA. Π­Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ мСсто, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° Ρƒ вас Π΅ΡΡ‚ΡŒ большой объСм Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ†ΠΈΠΊΠ»Π΅.

НиТС я ΠΏΡ€ΠΈΠ²ΠΎΠΆΡƒ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ReDim, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Preserve.

УмСньшСниС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° динамичСского массива

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ReDim для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° динамичСского массива.

Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π΄Π°Π½Π½Ρ‹Π΅ , хранящиСся Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… элСмСнтах, ΡΡ‚ΠΈΡ€Π°ΡŽΡ‚ΡΡ . Π­Ρ‚ΠΎ Ρ‚Π°ΠΊ, Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Preserve.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ReDim для объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

Π‘ тСорСтичСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ReDim ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….Π­Ρ‚ΠΎ Ρ‚ΠΎΡ‚ случай, Ссли ReDim ссылаСтся Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, которая Π½Π΅ сущСствуСт Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ модуля ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹.

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ объяснСно Microsoft:

Если другая пСрСмСнная с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ создана ΠΏΠΎΠ·ΠΆΠ΅, Π΄Π°ΠΆΠ΅ Π² Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΉ области, ReDim Π±ΡƒΠ΄Π΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π±ΠΎΠ»Π΅Π΅ позднюю ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ компиляции, Π΄Π°ΠΆΠ΅ Ссли дСйствуСт Option Explicit.

Из-Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ / ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ вслСдствиС Π²Ρ‹ΡˆΠ΅ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ, рСкомСндуСтся ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ReDim для объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ReDim ситуациями, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ измСняСтС Ρ€Π°Π·ΠΌΠ΅Ρ€ массива .

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ReDim

Как объяснил спСциалист ΠΏΠΎ Excel Π”ΠΆΠΎΠ½ Π£ΠΎΠΊΠ΅Π½Π±Π°Ρ… Π² ΠΊΠ½ΠΈΠ³Π΅ Excel VBA Programming for Dummies , всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с динамичСским массивом, обычно…

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов Π² массивС опрСдСляСтся ΠΏΠΎΠΊΠ° ваш ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, для Ρ†Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ 2 Π²Π΅Ρ‰ΠΈ:

  • ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β„– 1: Π’Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«DimensionSizeΒ».
  • Π”ΠΎΠΏΡƒΡ‰Π΅Π½ΠΈΠ΅ β„– 2: ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ sizeSize содСрТит ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π’ этом случаС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ReDim для измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива:

ReDim myArray (ΠΎΡ‚ 1 Π΄ΠΎ DimensionSize)

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом Π²Ρ‹ раздСляСтС Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ (,) . Π›ΠΎΠ³ΠΈΠΊΠ° Π² основном Ρ‚Π° ΠΆΠ΅, Ρ‡Ρ‚ΠΎ я объяснил Π²Ρ‹ΡˆΠ΅ для объявлСния ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ 3 ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ReDim ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами:

  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€ # 1: Если Ρƒ вас Π΅ΡΡ‚ΡŒ 2 ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, содСрТащиС значСния (DimensionSize1 ΠΈ DimensizeSize 2):

    ReDim myArray (ΠΎΡ‚ 1 Π΄ΠΎ DimensionSize1, ΠΎΡ‚ 1 Π΄ΠΎ DimensionSize2)

  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€ β„– 2: Если Ρƒ вас Π΅ΡΡ‚ΡŒ 3 ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΎΡ‚ Β«DimensionSize1Β» Π΄ΠΎ Β«DimensizeSize3Β»:

    ReDim myArray (1 для DimensionSize1, 1 для DimensionSize2, 1 для DimensionSize3)

  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€ # 3: Если Ρƒ вас Π΅ΡΡ‚ΡŒ 4 ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ (DimensizeSize1 - DimensizeSize4):

    ReDim myArray (1 Π² DimensionSize1, 1 Π² DimensionSize2, 1 Π² DimensionSize3, 1 - Π² DimensionSize4)

    НаконСц, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ инструкции ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Preserve Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ ReDim для сохранСния Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π›Π΅Π²Π°Π½Ρ‚ массив.Π― ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Preserve Π²Ρ‹ΡˆΠ΅.

    • ΠŸΡ€ΠΈΠΌΠ΅Ρ€ β„–1: Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдполагаСтся, Ρ‡Ρ‚ΠΎ (i) массив (myArray) ΠΈΠΌΠ΅Π΅Ρ‚ 5 элСмСнтов, Π° (ii) пСрСмСнная DimensizeSize ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 12. Если это Ρ‚Π°ΠΊ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ сохраняСт Π΄Π°Π½Π½Ρ‹Π΅, хранящиСся Π² ΠΏΠ΅Ρ€Π²Ρ‹Ρ… 5 элСмСнтах, ΠΈ добавляСт 7 Π½ΠΎΠ²Ρ‹Ρ… элСмСнтов Π² массив (ΠΎΡ‚ 6 Π΄ΠΎ 12):

      ReDim Preserve myArray (1 to DimensizeSize)

    • ΠŸΡ€ΠΈΠΌΠ΅Ρ€ β„– 2: Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдполагаСтся, Ρ‡Ρ‚ΠΎ (i) myArray ΠΈΠΌΠ΅Π΅Ρ‚ 2 измСрСния ΠΈ 9 элСмСнтов (3 x 3), Π° (ii) пСрСмСнная DimensizeSize ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 5.Π’ этом случаС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ сохраняСт Π΄Π°Π½Π½Ρ‹Π΅, хранящиСся Π² массивС, ΠΈ добавляСт 6 Π½ΠΎΠ²Ρ‹Ρ… элСмСнтов. Π Π°Π·ΠΌΠ΅Ρ€ массива послС этого ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° составляСт 3 x 5.

      ReDim Preserve myArray (ΠΎΡ‚ 1 Π΄ΠΎ 3, ΠΎΡ‚ 1 Π΄ΠΎ DimensionSize)

    • ΠŸΡ€ΠΈΠΌΠ΅Ρ€ β„– 3: Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдполагаСтся, Ρ‡Ρ‚ΠΎ (i) myArray ΠΈΠΌΠ΅Π΅Ρ‚ 3 измСрСния ΠΈ 8 элСмСнтов (2 x 2 x 2) ΠΈ (ii) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ DimensionSize Ρ€Π°Π²Π½ΠΎ 5. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅, хранящиСся Π² myArray, ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ 12 элСмСнтов.Π Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива составляСт 2 x 2 x 5.

      ReDim Preserve myArray (ΠΎΡ‚ 1 Π΄ΠΎ 2, ΠΎΡ‚ 1 Π΄ΠΎ 2, ΠΎΡ‚ 1 Π΄ΠΎ Dimensize)

    ΠŸΡ€ΠΈ просмотрС послСдних Ρ‚Ρ€Π΅Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ) Π²Ρ‹, , ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послСднСго измСрСния массива ΠΏΡ€ΠΈ использовании ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Preserve .

    Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ β„– 1 Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 1 ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ являСтся послСдним ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ΠΌ. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… β„–2 ΠΈ β„–3 Ρƒ вас Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ измСрСния. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² этих Π΄Π²ΡƒΡ… случаях я измСняю Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ послСднСго измСрСния.

    НиТниС Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ массива ΠΈ заявлСниС Option Base

    Как я объяснил Π²Ρ‹ΡˆΠ΅, Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ниТнюю Π³Ρ€Π°Π½ΠΈΡ†Ρƒ массива.

    Π­Ρ‚ΠΎ Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ Π½ΠΈΠΆΠ½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹. Как объяснили прСдставитСли Excel Π‘ΠΈΠ»Π» Π”ΠΆΠ΅Π»Π΅Π½ (Π³-Π½ Excel) ΠΈ ВрСйси Бирстад Π² Excel 2016 VBA ΠΈ Macros , ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ это, Π²Ρ‹ фактичСски Β«Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚Π΅Β» ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ Option Base ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ниТнюю Π³Ρ€Π°Π½ΠΈΡ†Ρƒ .

    ΠŸΡ€ΠΈ этом Π΅ΡΡ‚ΡŒ 2 Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° индСксации массива :

    • Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ β„– 1: Массив индСксируСтся с 0.
    • Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ β„– 2: Массив индСксируСтся с 1.

    Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· Π΄Π²ΡƒΡ… Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ массиву, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Option Base .

    ΠžΠΏΡ†ΠΈΡ индСксации ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - Option Base 0 . ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π²Ρ‹ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Π±Π°Π·Ρƒ ΠΏΡ€ΠΈ объявлСнии массива, ΠΎΠ½Π° начинаСтся с 0. Π­Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнный стандарт Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

    Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β„– 2 ΠΈ , Ρ‡Ρ‚ΠΎΠ±Ρ‹ массив Π±Ρ‹Π» проиндСксирован с 1, Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Option Base .Для этого Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части модуля, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅, ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Π»ΡŽΠ±Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ:

    Option Base 1

    На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° вСрхняя Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ модуля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΠ±Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Option Explicit. ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Option Base 1 Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΎΠ±Ρ‰ΠΈΡ… объявлСний ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ (One_Dimensional_Array_Declaration_1):

    ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Option Base:

    • ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ модуля.
    • Π”ΠΎΠ»ΠΆΠ΅Π½ Β«ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ объявлСниям массивов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ измСрСния».
    • Π˜Π·ΠΌΠ΅Π½ΡΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ниТнюю Π³Ρ€Π°Π½ΠΈΡ†Ρƒ массивов Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Option Base.

    Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Option Base для измСнСния Π½ΠΈΠΆΠ½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ массивов, созданных с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова ParamArray. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом ParamArray, срСди ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, для создания опрСдСляСмых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ (Π΄ΠΎ 255) количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

    Π”Π°Π²Π°ΠΉΡ‚Π΅ вСрнСмся ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² объявлСния массивов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я ΠΏΡ€ΠΈΠ²Π΅Π» Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… ΠΎ фиксированных ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… ΠΈ фиксированных ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивах.Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… прСдполагаСтся, Ρ‡Ρ‚ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ находится Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Β«Option Base 1Β», ΠΊΠ°ΠΊ я объяснил Π²Ρ‹ΡˆΠ΅.

    • ΠŸΡ€ΠΈΠΌΠ΅Ρ€ β„– 1: Оба ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ массив ΠΈΠ· 10 Ρ†Π΅Π»Ρ‹Ρ… чисСл (элСмСнты ΠΎΡ‚ 1 Π΄ΠΎ 10):

      Dim myArray (ΠΎΡ‚ 1 Π΄ΠΎ 10) ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число

      Dim myArray (10) ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число

    • ΠŸΡ€ΠΈΠΌΠ΅Ρ€ β„– 2: Π­Ρ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ массив ΠΈΠ· 20 строк (элСмСнты ΠΎΡ‚ 1 Π΄ΠΎ 20):

      Dim myArray (ΠΎΡ‚ 1 Π΄ΠΎ 20) As String

      Dim myArray (20) As String

    • ΠŸΡ€ΠΈΠΌΠ΅Ρ€ β„– 3: Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива с количСством элСмСнтов, Ρ€Π°Π²Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, содСрТащСмуся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ DimensizeSize (ΠΎΡ‚ элСмСнтов 1 Π΄ΠΎ DimensizeSize):

      ReDim myArray (ΠΎΡ‚ 1 Π΄ΠΎ DimensionSize)

      ReDim myArray (DimensizeSize )

    Как ΡΠΎΡΠ»Π°Ρ‚ΡŒΡΡ Π½Π° элСмСнт массива

    Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… этого руководства ΠΏΠΎ Excel основноС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ удСляСтся Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ массив ΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ массивов.Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ элСмСнт Π² массивС.

    Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ элСмСнт массива, Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ€ (Π°) индСкса для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ массива . Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, основной синтаксис ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, сколько ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ массив. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ порядковых Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ссылку, Ρ€Π°Π²Π½ΠΎ этому количСству ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ.

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

    Как ΡΠΎΡΠ»Π°Ρ‚ΡŒΡΡ Π½Π° элСмСнт Π² ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС

    Как объяснСно Π² Excel 2016 Power Programming с VBA , Π²Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΡΡ‹Π»Π°Π΅Ρ‚Π΅ΡΡŒ Π½Π° элСмСнт массива, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ 2 элСмСнта :

    • Item # 1: Имя массива.
    • Item # 2: ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ индСкс ΠΈΠ»ΠΈ индСксный Π½ΠΎΠΌΠ΅Ρ€.

    Базовая структура ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° , ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ссылки Π½Π° элСмСнт Π² ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС, выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

    Array_Name (Element_Index_Number)

    Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²:

    The ΠŸΡ€ΠΈΠΌΠ΅Ρ€ макроса , ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ (One_Dimensional_Array_Declaration_1), выполняСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ 3 дСйствия:

    1. ΠžΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ массив ΠΈΠ· 10 Ρ†Π΅Π»Ρ‹Ρ… чисСл (ΠΎΡ‚ 1 Π΄ΠΎ 10).

      Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ слСдуСт ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ объявлСния массива VBA, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я объяснил Π²Ρ‹ΡˆΠ΅.

    2. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива ΠΈ присваиваСт значСния ΠΎΡ‚ 1 Π΄ΠΎ 10 ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· этих элСмСнтов.

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

      Π― ΠΌΠΎΠ³Ρƒ Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ Π² Ρ‚Π΅ΠΌΡƒ заполнСния массива Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… сообщСний Π±Π»ΠΎΠ³Π°.Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ элСктронноС письмо всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° я ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΡŽ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π² Power Spreadsheets, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ для нашСй рассылки сСйчас, ΡƒΠΊΠ°Π·Π°Π² свой адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ Π½ΠΈΠΆΠ΅ :

    3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ MsgBox VBA для отобраТСния Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива (myArray (1)).

    ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ всС ссылки Π½Π° элСмСнты Π² элСмСнтах β„–2 ΠΈ β„–3 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π±Π°Π·ΠΎΠ²ΡƒΡŽ структуру ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я прСдставил Π²Ρ‹ΡˆΠ΅:

    Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ выполнСния этого ΠΎΠ±Ρ€Π°Π·Ρ†Π° макроса являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Excel ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ.ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² сообщСнии Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Ρ€Π°Π²Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, присвоСнному ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ элСмСнту массива Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ Sub Π²Ρ‹ΡˆΠ΅.

    Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ сдСлаСм шаг дальшС ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ вам…

    Как ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° элСмСнт Π² ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС

    Π›ΠΎΠ³ΠΈΠΊΠ° ссылки Π½Π° элСмСнт Π² ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π°. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° для ссылки Π½Π° Ρ‚Π°ΠΊΠΎΠΉ элСмСнт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

    • ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ β„– 1: Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π½ΠΎΠΌΠ΅Ρ€ индСкса для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ измСрСния массива.
    • ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ β„– 2: Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ порядковыС Π½ΠΎΠΌΠ΅Ρ€Π° запятыми (,).

    Как слСдствиС этих ΠΏΡ€Π°Π²ΠΈΠ», базовая структура ссылки Π½Π° элСмСнт Π² массивС с ## измСрСниями выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

    Имя_массива (Dimension1_Element_Index_Number, Dimension2_Element_Index_Number,…, Dimension ## _ Element_Index_Number)

    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ макроса (Two_Dimensional_Array_Declaration) выполняСт Ρ‚Π΅ ΠΆΠ΅ 3 дСйствия, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Sub Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅.Π’ΠΎΡ‡Π½Π΅Π΅, это:

    1. ΠžΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ массив ΠΈΠ· 9 Ρ†Π΅Π»Ρ‹Ρ… чисСл (3 x 3).

      Π― объяснил синтаксис этого ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ этого руководства.

    2. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива ΠΈ присваиваСт ΠΈΠΌ значСния ΠΎΡ‚ 1 Π΄ΠΎ 9.
    3. ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта массива (1, 1).

    На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Excel ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° я Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽ этот макрос:

    ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΈ оТидалось, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ совпадаСт со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, присвоСнным ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ элСмСнту массива Π² ΠΊΠΎΠ΄Π΅ VBA:

    Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° послСдний ΠΏΡ€ΠΈΠΌΠ΅Ρ€ макроса (Three_Dimensional_Array_Declaration), Π³Π΄Π΅ макрос Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом.Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ макроса выполняСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

    1. ΠžΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ массив ΠΈΠ· 8 Ρ†Π΅Π»Ρ‹Ρ… чисСл (2 x 2 x 2).
    2. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива ΠΈ присваиваСт ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту значСния ΠΎΡ‚ 1 Π΄ΠΎ 8.
    3. ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΎΠΊΠ½ΠΎ сообщСния со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, присвоСнным ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ элСмСнту массива (1, 1, 1).

    Π”ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Excel ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° я Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽ макрос, (ΠΊΠ°ΠΊ ΠΈ оТидалось) практичСски Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…:

    ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ, Π΅Ρ‰Π΅ Ρ€Π°Π·, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ Excel, совпадаСт с Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΌ для ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ VBA:

    Как ΡΡ‚Π΅Ρ€Π΅Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² массивС (ΠΈΠ»ΠΈ самом массивС)

    Как я объяснял Π²Ρ‹ΡˆΠ΅, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ReDim ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ стираСт Π΄Π°Π½Π½Ρ‹Π΅ Π² массивС, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅.

    Однако Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ‚Π΅Ρ€Π΅Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, хранящиСся Π² массивС, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°: Erase.

    Основная Ρ†Π΅Π»ΡŒ инструкции Erase :

    • ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½Π°Ρ инициализация элСмСнтов фиксированного массива.

      ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Erase Π½Π΅ восстанавливаСт ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с фиксированным массивом. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ устанавливаСт для элСмСнтов массива значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ….

    • ΠžΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ «пространство для хранСния динамичСского массива».

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

    Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ синтаксис ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Erase довольно прост:

    Π£Π΄Π°Π»ΠΈΡ‚ΡŒ arrayylist

    Для этих Ρ†Π΅Π»Π΅ΠΉ arraylist - это список массивов , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΡ‚Π΅Ρ€Π΅Ρ‚ΡŒ. Если Π²Ρ‹ стираСтС Π±ΠΎΠ»Π΅Π΅ 1 массива, Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅ ΠΈΡ… запятой (,) .

    Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Erase:

    • ΠŸΡ€ΠΈΠΌΠ΅Ρ€ β„– 1: Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ стираСт Π΄Π°Π½Π½Ρ‹Π΅, хранящиСся Π² myArray (Ссли ΠΎΠ½ исправлСн) ΠΈΠ»ΠΈ Π² самом myArray (Ссли ΠΎΠ½ динамичСский):

      Erase myArray

    • ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ стираСт Π΄Π°Π½Π½Ρ‹Π΅, хранящиСся ΠΊΠ°ΠΊ Π² myArray1, Ρ‚Π°ΠΊ ΠΈ Π² myArray2 (Ссли ΠΎΠ½ΠΈ исправлСны), ΠΈΠ»ΠΈ Π² самих массивах (Ссли ΠΎΠ½ΠΈ динамичСскиС):

      Erase myArray1, myArray2

    Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

    ПослС прочтСния этого руководства ΠΏΠΎ VBA, , Ρƒ вас, вСроятно, Π΅ΡΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Π²Π΅Ρ€Π΄ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹ массивов Excel VBA .Π‘Ρ€Π΅Π΄ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ :

    • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ массивы VBA ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *