Массив Π² vba: ΠœΠ°ΡΡΠΈΠ²Ρ‹ — Visual Basic | Microsoft Learn

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

Как Π² VBA ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив. ArrayList / Π₯Π°Π±Ρ€

Когда я Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ встрСтил этот класс, ΠΏΠΎΠ΄ΡƒΠΌΠ°Π» Β«Π—Π°Ρ‡Π΅ΠΌ? Π’Π΅Π΄ΡŒ Π΅ΡΡ‚ΡŒ простыС массивы». А ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΠΈ Π½Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽ ΠΊΠ°ΠΊ ΠΆΠΈΠ» Π±Π΅Π· Π½Π΅Π³ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅.

Начну сразу с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π½Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ листС Π² столбцС 1 находится список ЀИО сотрудников.

Бписок ЀИО

Наша Π·Π°Π΄Π°Ρ‡Π° ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π² массив Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ЀИО ΠΈ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ (Π½Ρƒ такая Π²ΠΎΡ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ странная Π·Π°Π΄Π°Ρ‡Π°). Π‘Π½Π°Ρ‡Π°Π»Π° Ρ€Π΅ΡˆΠΈΠΌ Π΅Π΅ Π±Π΅Π· использования ArrayList, Π° Π² ΠΊΠΎΠ½Ρ†Π΅ сравним Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Для получСния ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, создаСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ GetDistinctItems ΠΈ Π² Π½Π΅Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ столбСц с ЀИО. Π’ самой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠ±Π΅Π³Π°Π΅ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ For Each ΠΏΠΎ всСм ЀИО ΠΈ добавляСм ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Buffer (Dictionary). Π”Π°Π»Π΅Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Keys ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ элСмСнты Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ DescendingSort (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ сортировку ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠΌ) ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ отсортированныС значСния Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Sorted, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ ΠΊΠ°ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Public Sub Main()
    Dim FullNameColumn As Range
    Set FullNameColumn = ActiveSheet.UsedRange.Columns(1) ' ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ столбСц.
    Dim DistinctList As Variant
    DistinctList = GetDistinctItems(FullNameColumn) ' ΠŸΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.
    Debug.Print Join(DistinctList, vbCrLf) ' Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.
End Sub
Public Function GetDistinctItems(ByRef Range As Range) As Variant
    Dim Data As Variant: Data = Range.Value ' ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π² массив.
    Dim Buffer As Object: Set Buffer = CreateObject("Scripting.Dictionary") ' Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Dictionary.
    Dim Item
    For Each Item In Data
        If Not Buffer.Exists(Item) Then Buffer.Add Item, Empty ' ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ элСмСнта ΠΈ добавляСм Ссли отсутствуСт.
    Next
    
    Dim Sorted As Variant
    Sorted = DescendingSort(Buffer.Keys()) ' Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ DescendingSort.
    GetDistinctItems = Sorted ' Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.
End Function
Public Function DescendingSort(ByRef Data As Variant) As Variant
    Dim i As Long
    For i = LBound(Data) To UBound(Data) - 1
        Dim j As Long
        For j = i + 1 To UBound(Data)
            If Data(i) < Data(j) Then
                Dim Temp As Variant
                Temp = Data(j)
                Data(j) = Data(i)
                Data(i) = Temp
            End If
        Next
    Next
    DescendingSort = Data
End Function

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

Π’Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎ? Π’ΠΏΠΎΠ»Π½Π΅. ΠšΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎ? Ну Π² Ρ†Π΅Π»ΠΎΠΌ Π΄Π°, Π½ΠΎ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΌΡ‹ напишСм Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π΅ΠΉ, Π° Π·Π°ΠΎΠ΄Π½ΠΎ Ρ€Π΅ΡˆΠΈΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ написания Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ссли Π²Π΄Ρ€ΡƒΠ³ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ.

Π§Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅

НачнСм с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ArrayList это класс ΠΈΠ· пространства ΠΈΠΌΠ΅Π½ System.Collections Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ mscorlib, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс IList. ЕстСствСнно, Π² VBA ΠΎΠ½ нСсколько ΠΏΠΎΡ€Π΅Π·Π°Π½ Π² ΠΏΠ»Π°Π½Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΈΠ½Π°Ρ‡Π΅ ΠΈ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΌΠΎΠ³Π»ΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² AddRange ΠΈΠ»ΠΈ BinarySearch). Но ΠΈ Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ с Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ (ΠΈ Π½ΡƒΠΆΠ½ΠΎ) Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.
По сути, это динамичСский массив. Π•Π³ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ, достаточно Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ элСмСнты с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Add. Π“Π΄Π΅-Ρ‚ΠΎ я Ρ‡ΠΈΡ‚Π°Π», Ρ‡Ρ‚ΠΎ Π½Π° Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ (Π΄Π° простят мСня Π·Π½Π°Ρ‚ΠΎΠΊΠΈ, я Π½Π΅ знаю ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π»ΠΈ я ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽ это словосочСтаниС здСсь) Π΅ΡΡ‚ΡŒ свои Π½ΡŽΠ°Π½ΡΡ‹ Π² ΠΏΠ»Π°Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½ΠΎ, ΠΎΡ‚ΠΊΡ€ΠΎΠ²Π΅Π½Π½ΠΎ говоря, Π·Π° всС врСмя использования этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ я Π½Π΅ Π·Π°ΠΌΠ΅Ρ‡Π°Π» ΠΈ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ макроса ΠΈΠ·-Π·Π° Π½Π΅Π³ΠΎ Ссли ΠΈ растСт Π²ΠΎΠΎΠ±Ρ‰Π΅, Ρ‚ΠΎ совсСм Π½Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ.

Π’ Ρ‡Π΅ΠΌ ΠΆΠ΅ сила Π±Ρ€Π°Ρ‚ удобство?

Как ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ это динамичСский массив. Π’Ρ‹ просто добавляСтС элСмСнты Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΌΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π° Ρ‚Π΅ΠΌΡƒ ReDim (ΠΈ ΡƒΠΆ Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Preserve) ΠΈ вычислСний Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ массива.

А дальшС Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ вкусняхи

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

Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ UBound, вСдь Ρƒ этого класса Π΅ΡΡ‚ΡŒ свойство Count, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅, ΠΊΠ°ΠΊ Π½Π΅ слоТно Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство элСмСнтов ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹Ρ… Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.
Π’-Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹Ρ…, Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ быстро ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты ΠΊΠ°ΠΊ ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ (ΠΌΠ΅Ρ‚ΠΎΠ΄ Sort), Ρ‚Π°ΠΊ ΠΈ ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ (сначала ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ Sort, Π° послС ΠΌΠ΅Ρ‚ΠΎΠ΄ Reverse).

Ну ΠΈ быстро ΠΏΡ€ΠΎΠ±Π΅Π³Π°Π΅ΠΌ ΠΏΠΎ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠΌΡΡ свойствам:

Item(Index)
ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ доступ ΠΊ элСмСнту ΠΏΠΎ Π΅Π³ΠΎ индСксу.

ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ:

IndexOf(Item, StartFrom)
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ индСкс элСмСнта. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ StartFrom ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ индСкс ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… элСмСнтов.

RemoveAt(Index)
УдаляСт элСмСнт ΠΏΠΎ индСксу.

Remove(Item)
УдаляСт ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ элСмСнт.

RemoveRange(StartPosition, Count)
УдаляСт Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ элСмСнтов. StartPosition ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° индСкс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта, Count Π½Π° количСство элСмСнтов Π² удаляСмом Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅.

Clear()
УдаляСт всС элСмСнты.

Insert(Position, Item)
ДобавляСт элСмСнт ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ.

Clone()
Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ копию ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (ΠΏΠΎ сути создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π° Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ссылку Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ).

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ это Ρ‡ΡƒΠ΄ΠΎ

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса ArrayList ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ CreateObject:

Dim List As Object
Set List = CreateObject("System. Collections.ArrayList")

ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· Tools -> Reference ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ mscorlib.dll, Π° дальшС ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚:

Dim List As New ArrayList

ΠœΠΈΠ½ΡƒΡ ΠΈ Ρ‚ΠΎΠΉ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ привязки Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ интСрфСйс ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρƒ Π»ΠΈΡ‡Π½ΠΎ я Π½Π΅ знаю, Π½ΠΎ ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ VBA Π² Excel (большС Π½ΠΈΠ³Π΄Π΅ Π½Π΅ провСрял) Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚ свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ этого класса (Π² ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ привязкС ΠΈΡ… ΠΈ Ρ‚Π°ΠΊ Π½Π΅Ρ‚ Π½ΠΈ Ρƒ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Object, Π° Π²ΠΎΡ‚ Π² Ρ€Π°Π½Π½Π΅ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π΅ΡΡ‚ΡŒ).

МоТно, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ интСрфСйса, объявив ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с Ρ‚ΠΈΠΏΠΎΠΌ IList ΠΈ ΡƒΠΆΠ΅ послС этого ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΅ΠΉ инстанс ArrayList, Π½ΠΎ Ρ‚Π΅ΠΌ самым ΠΌΡ‹ потСряСм Π±ΠžΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Sort, ToArray, Reverse.

ВСрнСмся Π² Π½Π°Ρ‡Π°Π»ΠΎ

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ наш ΠΏΡ€ΠΈΠΌΠ΅Ρ€? ΠŸΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ с Π½ΠΎΠ²Ρ‹ΠΌΠΈ знаниями.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ добавляСм ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ значСния Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Buffer (ArrayList), ΠΏΠ΅Ρ€Π΅Π΄ этим провСряя ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Contains Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ЀИО Π² спискС элСмСнтов. По ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΡŽ Ρ†ΠΈΠΊΠ»Π° примСняСм ΠΌΠ΅Ρ‚ΠΎΠ΄ Sort ΠΈ Reverse для получСния списка ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ. Π’Ρ‹Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ToArray. Π‘ΠΎΠ³Π»Π°ΡΠΈΡ‚Π΅ΡΡŒ Π½Π° этот Ρ€Π°Π· всС Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π΅ΠΉ.

Public Sub Main()
    Dim FullNameColumn As Range
    Set FullNameColumn = ActiveSheet.UsedRange.Columns(1) ' ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ столбСц.
    Dim DistinctList As Variant
    DistinctList = GetDistinctItems(FullNameColumn) ' ΠŸΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.
    Debug.Print Join(DistinctList, vbCrLf) ' Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.
End Sub
Public Function GetDistinctItems(ByRef Range As Range) As Variant
    Dim Data As Variant: Data = Range.Value ' ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π² массив.
    Dim Buffer As Object: Set Buffer = CreateObject("System.Collections.ArrayList") ' Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ArrayList.
    Dim Item
    For Each Item In Data
        If Not Buffer.Contains(Item) Then Buffer.Add Item ' ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ элСмСнта ΠΈ добавляСм Ссли отсутствуСт.
    Next
    Buffer.Sort: Buffer.Reverse ' Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ (ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ). 
    GetDistinctItems = Buffer.ToArray() ' Π’Ρ‹Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π² Π²ΠΈΠ΄Π΅ массива.
End Function

Π˜Ρ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

Π§Ρ‚ΠΎ Π² ΠΈΡ‚ΠΎΠ³Π΅

Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ прСимущСство ΠΏΠ΅Ρ€Π΅Π΄ классом Collection Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ элСмСнта Π² спискС (Π±Π΅Π· Ρ‚Π°Π½Ρ†Π΅Π² с Π±ΡƒΠ±Π½ΠΎΠΌ) ΠΈ быстрая Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ° Π² Π²ΠΈΠ΄Π΅ массива (Π±Π΅Π· написания Ρ†ΠΈΠΊΠ»Π°).

ΠŸΠ΅Ρ€Π΅Π΄ классом Dictionary, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, прСимущСство Π² отсутствии нСобходимости ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ΠΈ (Ссли ΠΎΠ½ΠΈ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹).

Ну ΠΈ ΠΎΠ±Π° Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°ΡŽΡ‚ Π² ΠΏΠ»Π°Π½Π΅ сортировки, добавлСния элСмСнтов ΠΏΠΎ индСксу ΠΈ Ρ‚.Π΄.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ ΠΈ Ρ†Π΅Π»ΠΎΠΌ, достаточно ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ класс для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Range Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ массив, Π½ΠΎ Ссли Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Ρ†ΠΈΠΊΠ»Π΅), Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎ ΠΌΠ½Π΅, ArrayList прСвосходный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.

Π£ΠΆΠ΅ послС написания ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ» Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° чистом ПК Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, появляСтся automation error -2146232576 ΠΏΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ArrayList.

Будя ΠΏΠΎ этому ΠΎΡ‚Π²Π΅Ρ‚Ρƒ, для Ρ€Π°Π±ΠΎΡ‚Ρ‹ mscorlib Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ .NET Framework 3.5.

Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· ПанСль управлСния -> ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ -> Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Windows -> ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π³Π°Π»ΠΎΡ‡ΠΊΡƒ Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ² .NET Framework 3.5 (Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ .NET 2.0 ΠΈ 3.0) послС Ρ‡Π΅Π³ΠΎ Π½Π° ПК ΡΠΊΠ°Ρ‡Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ послС ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π½Π½Ρ‹Ρ… дСйствий ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Excel. Π£ мСня ΠΏΡ€ΠΈ установкС Π²Ρ‹Π΄Π°Π» ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π˜ΡΠΏΡ€Π°Π²ΠΈΠ»ΠΎΡΡŒ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Excel ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

К слову Π½Π° ΠΌΠΎΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ПК Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π΅ Π±Ρ‹Π»ΠΎ, Ρ‚.Π΅. Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΡƒΠΆΠ΅ Π±Ρ‹Π» ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ (ΠΈΠ»ΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Ρ€Π°Π½Π½ΠΈΡ… Windows, Π½Π΅ знаю Ρ‚ΠΎΡ‡Π½ΠΎ).

Бпасибо, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π»ΠΈ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°.

Как насчСт примСнСния этого класса? ΠŸΠΈΡˆΠΈΡ‚Π΅ Π² коммСнтариях!
А Ρ‚Π°ΠΊΠΆΠ΅, ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° ΠΌΠΎΠΉΒ 
Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌΠΌ.

ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² VBA: ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с массивами

ΠœΡ‹ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ пСрСмСнная являСтся ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ для хранСния значСния. Иногда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π° Ρ€Π°Π·. Когда ряд Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ хранится Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΎΠ½ извСстСн ΠΊΠ°ΠΊ пСрСмСнная массива.

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

  • ОбъявлСниС массивов
  • НазначСниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массиву
  • ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы
  • ОбъявлСниС ReDim
  • ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ массива
  • Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами
  • LBound
  • UBound
  • Split
  • Join
  • Filter
  • IsArray
  • Erase

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

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

'Method 1 : Using Dim
Dim arr1()	'Without Size

'Method 2 : Mentioning the Size
Dim arr2(5)  'Declared with size of 5

'Method 3 : using 'Array' Parameter
Dim arr3
arr3 = Array("apple","Orange","Grapes")
  • Π₯отя Ρ€Π°Π·ΠΌΠ΅Ρ€ массива указываСтся ΠΊΠ°ΠΊ 5, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ 6 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ индСкс массива начинаСтся с ZERO.
  • ИндСкс массива Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.
  • ΠœΠ°ΡΡΠΈΠ²Ρ‹ VBScript ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ любой Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² массивС. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, массив ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π»ΠΎΠ΅ число, строку ΠΈΠ»ΠΈ символы Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ массива.

НазначСниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массиву

ЗначСния ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ массиву, указывая Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ индСкса массива для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½Π°Π·Π½Π°Ρ‡Π°Π΅ΠΌΡ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ строка.

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

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Private Sub Constant_demo_Click()
   Dim arr(5)
   arr(0) = "1"           'Number as String
   arr(1) = "VBScript"    'String
   arr(2) = 100 		   'Number
   arr(3) = 2.45 		   'Decimal Number
   arr(4) = #10/07/2013#  'Date
   arr(5) = #12.45 PM#    'Time
  
   msgbox("Value stored in Array index 0 : " & arr(0))
   msgbox("Value stored in Array index 1 : " & arr(1))
   msgbox("Value stored in Array index 2 : " & arr(2))
   msgbox("Value stored in Array index 3 : " & arr(3))
   msgbox("Value stored in Array index 4 : " & arr(4))
   msgbox("Value stored in Array index 5 : " & arr(5))
End Sub

Когда Π²Ρ‹ выполняСтС Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΎΠ½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄.

Value stored in Array index 0 : 1
Value stored in Array index 1 : VBScript
Value stored in Array index 2 : 100
Value stored in Array index 3 : 2.45
Value stored in Array index 4 : 7/10/2013
Value stored in Array index 5 : 12:45:00 PM

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

ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ΠΌ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ максимум 60 ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ. Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅.

ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ с трСмя строками ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€ΡŒΠΌΡ столбцами.

Private Sub Constant_demo_Click()
   Dim arr(2,3) as Variant	' Which has 3 rows and 4 columns
   arr(0,0) = "Apple" 
   arr(0,1) = "Orange"
   arr(0,2) = "Grapes"           
   arr(0,3) = "pineapple" 
   arr(1,0) = "cucumber"           
   arr(1,1) = "beans"           
   arr(1,2) = "carrot"           
   arr(1,3) = "tomato"           
   arr(2,0) = "potato"             
   arr(2,1) = "sandwitch"            
   arr(2,2) = "coffee"             
   arr(2,3) = "nuts"            
           
   msgbox("Value in Array index 0,1 : " &  arr(0,1))
   msgbox("Value in Array index 2,2 : " &  arr(2,2))
End Sub

Когда Π²Ρ‹ выполняСтС Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΎΠ½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄.

Value stored in Array index : 0 , 1 : Orange
Value stored in Array index : 2 , 2 : coffee

ОбъявлСниС ReDim

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ReDim ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… динамичСского массива ΠΈ распрСдСлСния ΠΈΠ»ΠΈ пСрСраспрСдСлСния пространства для хранСния.

БинтаксисReDim [Preserve] varname(subscripts) [, varname(subscripts)]
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ОписаниС

  • Preserve — Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для сохранСния Π΄Π°Π½Π½Ρ‹Ρ… Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ массивС ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° послСднСго измСрСния.
  • Varname — ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ стандартным соглашСниям ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ….
  • Subscript — Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива.

ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ массив Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, Π° Π·Π°Ρ‚Π΅ΠΌ значСния ΡΠΎΡ…Ρ€Π°Π½ΡΠ»ΠΈΡΡŒ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива, мСньшСго, Ρ‡Π΅ΠΌ это Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ, Π΄Π°Π½Π½Ρ‹Π΅ Π² устранСнных элСмСнтах Π±ΡƒΠ΄ΡƒΡ‚ потСряны.

Private Sub Constant_demo_Click()
   Dim a() as variant
   i = 0
   redim a(5)
   a(0) = "XYZ"
   a(1) = 41.25
   a(2) = 22
  
   REDIM PRESERVE a(7)
   For i = 3 to 7
   a(i) = i
   Next
  
   'to Fetch the output
   For i = 0 to ubound(a)
      Msgbox a(i)
   Next
End Sub

Когда Π²Ρ‹ выполняСтС Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΎΠ½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄.

XYZ
41.25
22
3
4
5
6
7

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ массива

Π’ VBScript Π΅ΡΡ‚ΡŒ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ эффСктивно ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ массивы. ВсС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ вмСстС с массивами, пСрСчислСны Π½ΠΈΠΆΠ΅. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎΠ± этом, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° имя ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами

LBound

Ѐункция LBound Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ наимСньший индСкс ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ массива.Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, LBound массива — ZERO.

БинтаксисLBound(ArrayName[,dimension])
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ‹ ΠΈ ОписаниС

  • ArrayName — ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ соотвСтствуСт ΠΈΠΌΠ΅Π½ΠΈ массива.
  • Π Π°Π·ΠΌΠ΅Ρ€ — Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ цСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ массива. Если это Β«1Β», Ρ‚ΠΎ ΠΎΠ½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ниТнюю Π³Ρ€Π°Π½ΠΈΡ†Ρƒ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ измСрСния;Ссли это Β«2Β», Ρ‚ΠΎ ΠΎΠ½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ниТнюю Π³Ρ€Π°Π½ΠΈΡ†Ρƒ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ измСрСния ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Private Sub Constant_demo_Click()
   Dim arr(5) as Variant
   arr(0) = "1"           'Number as String
   arr(1) = "VBScript     'String
   arr(2) = 100           'Number
   arr(3) = 2.45          'Decimal Number
   arr(4) = #10/07/2013#  'Date
   arr(5) = #12. 45 PM#    'Time
   msgbox("The smallest Subscript value of  the given array is : " & LBound(arr))

   ' For MultiDimension Arrays :
   Dim arr2(3,2) as Variant
   msgbox("The smallest Subscript of the first dimension of arr2 is : " & LBound(arr2,1))
   msgbox("The smallest Subscript of the Second dimension of arr2 is : " & LBound(arr2,2))
End Sub

Когда Π²Ρ‹ выполняСтС Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΎΠ½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄.

The smallest Subscript value of the given array is : 0
The smallest Subscript of the first dimension of arr2 is : 0
The smallest Subscript of the Second dimension of arr2 is : 0

Ѐункция, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ†Π΅Π»ΠΎΠ΅ число, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΌΡƒ индСксу Π΄Π°Π½Π½Ρ‹Ρ… массивов.

UBound

Ѐункция UBound Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ наибольший индСкс ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ массива.Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ соотвСтствуСт Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ массива.

БинтаксисUBound(ArrayName[,dimension])
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ ОписаниС

  • ArrayName — ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ соотвСтствуСт ΠΈΠΌΠ΅Π½ΠΈ массива.
  • Π Π°Π·ΠΌΠ΅Ρ€ — Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ цСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ массива. Если это Β«1Β», Ρ‚ΠΎ ΠΎΠ½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ниТнюю Π³Ρ€Π°Π½ΠΈΡ†Ρƒ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ измСрСния;Ссли ΠΎΠ½ Ρ€Π°Π²Π΅Π½ Β«2Β», Ρ‚ΠΎ ΠΎΠ½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ниТнюю Π³Ρ€Π°Π½ΠΈΡ†Ρƒ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ измСрСния ΠΈ Ρ‚. Π΄.

ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Private Sub Constant_demo_Click()
   Dim arr(5) as Variant
   arr(0) = "1"           'Number as String
   arr(1) = "VBScript     'String
   arr(2) = 100           'Number
   arr(3) = 2.45          'Decimal Number
   arr(4) = #10/07/2013#  'Date
   arr(5) = #12.45 PM#    'Time
   msgbox("The smallest Subscript value of  the given array is : " & UBound(arr))

   ' For MultiDimension Arrays :
   Dim arr2(3,2) as Variant
   msgbox("The smallest Subscript of the first dimension of arr2 is : " & UBound(arr2,1))
   msgbox("The smallest Subscript of the Second dimension of arr2 is : " & UBound(arr2,2))
End Sub

Когда Π²Ρ‹ выполняСтС Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΎΠ½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄.

The Largest Subscript value of the given array is : 5
The Largest Subscript of the first dimension of arr2 is : 3
The Largest Subscript of the Second dimension of arr2 is : 2

Ѐункция, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ†Π΅Π»ΠΎΠ΅ число, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ самому Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ индСксу Π΄Π°Π½Π½Ρ‹Ρ… массивов.

Split

Ѐункция Split Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ количСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π½Π° основС раздСлитСля.

БинтаксисSplit(expression [,delimiter[, count[, compare]]])
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ ОписаниС

  • Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ — Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ строки с раздСлитСлями.
  • Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ — Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для прСобразования Π² массивы Π½Π° основС раздСлитСля.
  • Count — Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ подстрок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ, ΠΈ Ссли ΡƒΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ°ΠΊ -1, Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ всС подстроки.
  • Compare — ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ сравнСния слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.
  • 0 = vbBinaryCompare — выполняСт Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ сравнСниС
  • 1 = vbTextCompare — выполняСт тСкстовоС сравнСниС

ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Private Sub Constant_demo_Click()
   ' Splitting based on delimiter comma '$'
   Dim a as Variant
   Dim b as Variant
   
   a = Split("Red $ Blue $ Yellow","$")
   b = ubound(a)
   
   For i = 0 to b
      msgbox("The value of array in " & i & " is :"  & a(i))
   Next
End Sub

Когда Π²Ρ‹ выполняСтС Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΎΠ½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄.

The value of array in 0 is :Red
The value of array in 1 is : Blue
The value of array in 2 is : Yellow

Ѐункция, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив, содСрТащий ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ количСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ.

Join

Π­Ρ‚ΠΎ функция, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ количСство подстрок Π² массивС. Π­Ρ‚ΠΎ полная противополоТная функция ΠΌΠ΅Ρ‚ΠΎΠ΄Π° раздСлСния.

БинтаксисJoin(List[,delimiter])
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ ОписаниС

  • Бписок — Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. Массив, содСрТащий подстроки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ соСдинСны.
  • Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ — Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. Π‘ΠΈΠΌΠ²ΠΎΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π΅ строки. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ являСтся Space.

ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Private Sub Constant_demo_Click()
   ' Join using spaces
   a = array("Red","Blue","Yellow")
   b = join(a)
   msgbox("The value of b " & " is :"  & b)
  
   ' Join using $
   b = join(a,"$")
   msgbox("The Join result after using delimiter is : " & b)
End Sub

Когда Π²Ρ‹ выполняСтС Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΎΠ½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄.

The value of b is :Red Blue Yellow
The Join result after using delimiter is : Red$Blue$Yellow

Ѐункция, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ количСство подстрок Π² массивС. Π­Ρ‚ΠΎ полная противополоТная функция ΠΌΠ΅Ρ‚ΠΎΠ΄Π° раздСлСния.

Filter

Ѐункция Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив Π½Π° основС нуля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит подмноТСство массива строк Π½Π° основС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°.

БинтаксисFilter(inputstrings, value[, include [,compare]])
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ ОписаниС

  • Inputstrings — ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ соотвСтствуСт массиву строк для поиска.
  • Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ — Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ соотвСтствуСт строкС для поиска ΠΏΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ inputstrings.
  • Include — Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. Π­Ρ‚ΠΎ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, слСдуСт Π»ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ подстроки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΈΠ»ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚.
  • Compare — ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ описываСт, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ сравнСния строк Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ.
  • 0 = vbBinaryCompare — выполняСт Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ сравнСниС
  • 1 = vbTextCompare — выполняСт тСкстовоС сравнСниС

ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Private Sub Constant_demo_Click()
   Dim a,b,c,d as Variant
   a = array("Red","Blue","Yellow")
   b = Filter(a,"B")
   c = Filter(a,"e")
   d = Filter(a,"Y")
  
   For each x in b
      msgbox("The Filter result 1: " & x)
   Next
  
   For each y in c
      msgbox("The Filter result 2: " & y)
   Next
  
   For each z in d
      msgbox("The Filter result 3: " & z)
   Next
End Sub

Когда Π²Ρ‹ выполняСтС Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΎΠ½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄.p The Filter result 1: Blue
The Filter result 2: Red
The Filter result 2: Blue
The Filter result 2: Yellow
The Filter result 3: Yellow

Ѐункция, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив с Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ основаниСм, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит подмноТСство массива строк Π½Π° основС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°.

IsArray

Ѐункция IsArray Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅, являСтся Π»ΠΈ указанная входная пСрСмСнная ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ NOT ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ массива.

БинтаксисIsArray(variablename)
ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Private Sub Constant_demo_Click()
   Dim a,b as Variant
   a = array("Red","Blue","Yellow")
   b = "12345"
  
   msgbox("The IsArray result 1 : " & IsArray(a))
   msgbox("The IsArray result 2 : " & IsArray(b))
End Sub

Когда Π²Ρ‹ выполняСтС Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΎΠ½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄.

The IsArray result 1 : True
The IsArray result 2 : False

Ѐункция, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅, являСтся Π»ΠΈ входная пСрСмСнная массивом.

Erase

Ѐункция Erase ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для сброса Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массивов фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ освобоТдСния памяти динамичСских массивов. Он Π²Π΅Π΄Π΅Ρ‚ сСбя Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° массивов.

БинтаксисErase ArrayName

  • Ѐиксированный числовой массив, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π² массивС сбрасываСтся Π΄ΠΎ нуля.
  • Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ строковый массив, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π² массивС сбрасываСтся Π΄ΠΎ Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ «».
  • Массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π² массивС сбрасываСтся Π΄ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния Nothing.

ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Private Sub Constant_demo_Click()
   Dim NumArray(3)
   NumArray(0) = "VBScript"
   NumArray(1) = 1.05
   NumArray(2) = 25
   NumArray(3) = #23/04/2013#
  
   Dim DynamicArray()
   ReDim DynamicArray(9)   ' Allocate storage space.
  
   Erase NumArray          ' Each element is reinitialized.
   Erase DynamicArray      ' Free memory used by array.
  
   ' All values would be erased.
   msgbox("The value at Zeroth index of NumArray is " & NumArray(0))
   msgbox("The value at First index of NumArray is " & NumArray(1))
   msgbox("The value at Second index of NumArray is " & NumArray(2))
   msgbox("The value at Third index of NumArray is " & NumArray(3))
End Sub

Когда Π²Ρ‹ выполняСтС Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΎΠ½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄.

The value at Zeroth index of NumArray is
The value at First index of NumArray is
The value at Second index of NumArray is
The value at Third index of NumArray is

Ѐункция, которая восстанавливаСт Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… массива.

Β Π‘ ΡƒΠ²Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π°Π²Ρ‚ΠΎΡ€Ρ‹ сайта ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΏΠΈΡ

ΠŸΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ ΡΡ‚Π°Ρ‚ΡŒΡ? ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ Сю с Π΄Ρ€ΡƒΠ·ΡŒΡΠΌΠΈ ΠΈ Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΎΡ‚Π·Ρ‹Π² Π² коммСнтариях!

ΠœΠ°ΡΡΠΈΠ²Ρ‹ VBA — Автоматизация Excel

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅

  • ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ массивов VBA
    • ΠœΠ°ΡΡΠΈΠ²Ρ‹
  • ΠšΡ€Π°Ρ‚ΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ массивов VBA
  • ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° массивов? — Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ!
  • Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ / ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ массив (DIM)
    • БтатичСский массив
    • ДинамичСский массив
    • Redim vs. Redim Proverve
    • ОбъявлСниС массивов ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΎ
  • .
    • Π’Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ массив Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅
  • 2D / ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы
  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов
    • 1D ΠŸΡ€ΠΈΠΌΠ΅Ρ€
    • 2D Array ΠŸΡ€ΠΈΠΌΠ΅Ρ€
    • 3D Array ΠŸΡ€ΠΈΠΌΠ΅Ρ€
  • 5 / Ρ€Π°Π·ΠΌΠ΅Ρ€
  • 9
  • 9
  • 9
  • 9 Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ LBound
  • Ѐункция Π΄Π»ΠΈΠ½Ρ‹ массива
  • ЦикличСский Ρ†ΠΈΠΊΠ» массива
    • Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ массива Π¦ΠΈΠΊΠ»
    • ЦикличСский Ρ†ΠΈΠΊΠ» 2D-массива
  • Π”Ρ€ΡƒΠ³ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ массива
    • Clear Array
    • Count Array
    • Remove Duplicates
    • Filter
    • IsArray Function
    • Join Array
    • Split String into Array
    • Const Array
    • Copy Array
    • Transpose
    • Function Return Array
  • Using ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² Access VBA
  • Π’ VBA Массив β€” это ΠΎΠ΄Π½Π° пСрСмСнная, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π”ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ массивС ΠΊΠ°ΠΊ ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ячССк: каТдая ячСйка ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ (ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌ столбцС), Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ (ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строках ΠΈ столбцах) ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ. К значСниям массива ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΏΠΎ ΠΈΡ… полоТСнию (Π½ΠΎΠΌΠ΅Ρ€Ρƒ индСкса) Π² массивС.

    VBA Array Quick Sheet

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

    Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ

    Dim arr(1 To 3) As Variant
    arr(1) = Β«ΠΎΠ΄ΠΈΠ½Β»
    arr(2) = Β«Π΄Π²Π°Β»
    arr(3) = Β«Ρ‚Ρ€ΠΈΒ»

    Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ· Excel

    Π£ΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ячСйки (ΠΎΡ‚ 1 Π΄ΠΎ 3) ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
    Π—Π°Ρ‚Π΅ΠΌΠ½ΠΈΡ‚ΡŒ ячСйку ΠΊΠ°ΠΊ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½, i ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
    i = LBound(arr)
    Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ячСйки Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (Β«A1:A3Β»)
    i = i + 1
    arr(i) = cell.value
    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ячСйка

    Π§ΠΈΡ‚Π°Ρ‚ΡŒ всС элСмСнты

    Dim i as Long
    For i = LBound(arr) To UBound(arr)
    MsgBox arr(i)
    Next i

    Erase

    Erase arr

    Array to String

    Dim sName As String
    sName = Join(arr, β€œ:”)

    Reserve aDrr Size

    3 100)

    Set Value

    arr(1) = 22

    VBA Quick Examples

    ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΡƒΠ³Π»ΡƒΠ±Π»ΡΡ‚ΡŒΡΡ Π² Π΄Π΅Ρ‚Π°Π»ΠΈ, рассмотрим ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

     Sub ArrayExample()
        Dim strNames (ΠΎΡ‚ 1 Π΄ΠΎ 4) ΠΊΠ°ΠΊ строка
    
        strNames(1) = "Π¨Π΅Π»Π»ΠΈ"
        strNames(2) = "Π‘Ρ‚ΠΈΠ²"
        strNames(3) = "Нима"
        strNames(4) = "Π₯осС"
    
        msgbox strNames(3)
    ΠšΠΎΠ½Π΅Ρ† суб 

    Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ создали ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ строковый массив: strNames Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ (ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ значСния) ΠΈ присвоили Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ значСния. НаконСц, ΠΌΡ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΎΠΊΠ½Π΅ сообщСния.

    Π’ этом случаС польза ΠΎΡ‚ использования массива Π½Π΅Π²Π΅Π»ΠΈΠΊΠ°: трСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ вмСсто Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ….

    Β 

    Однако Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ ΠΈΡΡ‚ΠΈΠ½Π½ΡƒΡŽ ΠΌΠΎΡ‰ΡŒ массива:

     Sub ArrayExample2()
        Dim strNames (ΠΎΡ‚ 1 Π΄ΠΎ 60000) ΠΊΠ°ΠΊ строка
        Π”ΠΈΠΌ ΠΈ ΠΏΠΎΠΊΠ°
    
        Для я = 1 Π΄ΠΎ 60000
            strNames(i) = Cells(i, 1).Value
        Π”Π°Π»Π΅Π΅ я
    ΠšΠΎΠ½Π΅Ρ† суб 

    Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ создали массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ 60 000 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΈ ΠΌΡ‹ быстро Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ массив ΠΈΠ· столбца A Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа.

    ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° массива? — Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ!

    Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ массивах, ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ листы Excel:

    • КаТдая ячСйка (ΠΈΠ»ΠΈ элСмСнт массива) ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ собствСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
    • Доступ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ячСйкС (ΠΈΠ»ΠΈ элСмСнту массива) ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ Π΅Π΅ полоТСнию Π² строкС ΠΈ столбцС.
      • Π Π°Π±ΠΎΡ‡ΠΈΠΉ лист Π£ΠΏΡ€. ячСйки (1,4). Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = Β«Π‘Ρ‚Ρ€ΠΎΠΊΠ° 1, столбСц 4Β»
      • Массив ΠΏΡ€. arrVar(1,4) = «Π‘Ρ‚Ρ€ΠΎΠΊΠ° 1, Π‘Ρ‚ΠΎΠ»Π±Π΅Ρ† 4»

    Π’Π°ΠΊ Π·Π°Ρ‡Π΅ΠΌ Π²ΠΎΠ·ΠΈΡ‚ΡŒΡΡ с массивами? ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ просто Π½Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ Π½Π΅ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ значСния нСпосрСдствСнно Π² ячСйки Excel? Одно слово: Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ!

    Π§Ρ‚Π΅Π½ΠΈΠ΅/запись Π² ячСйки Excel β€” ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ процСсс. Π Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с массивами Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС!

    БозданиС/объявлСниС массива (Dim)

    ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько Β«ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉΒ». Для простоты ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ с Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами. ПозТС Π² этом руководствС ΠΌΡ‹ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠΌ вас с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами.

    БтатичСский массив

    БтатичСскиС массивы β€” это массивы, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ. И Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, динамичСских массивов ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€. Они Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° статичСскиС массивы.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Если Ρ€Π°Π·ΠΌΠ΅Ρ€ массива Π½Π΅ измСнится, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ статичСский массив.

    ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ статичСского массива ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° объявлСниС ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива. БущСствуСт нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способов Π·Π°Π΄Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива.

    Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ явно ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ массива:

     Sub StaticArray1()
    
        'Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ массив с позициями 1,2,3,4
        Dim arrDemo1 (ΠΎΡ‚ 1 Π΄ΠΎ 4) ΠΊΠ°ΠΊ строка
        
        'Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ массив с позициями 4,5,6,7
        Dim arrDemo2 (ΠΎΡ‚ 4 Π΄ΠΎ 7) Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ°
        
        'Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ массив с позициями 0,1,2,3
        Dim arrDemo3 (ΠΎΡ‚ 0 Π΄ΠΎ 3) As Long
    
    End Sub 

    Или Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ввСсти Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива:

     Sub StaticArray2()
    
        'Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ массив с позициями 0,1,2,3
        Dim arrDemo1(3) ΠΊΠ°ΠΊ строка
    
    ΠšΠΎΠ½Π΅Ρ† суб 

    Π’Π°ΠΆΠ½ΠΎ! ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ массивы Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ 0. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Dim arrDemo1(3) создаСт массив с позициями 0,1,2,3.

    Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Option Base 1 Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части вашСго модуля, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вмСсто этого массив начинался с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ 1:

     Option Base 1
    
    БубстатичСский массив3()
    
        'Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ массив с позициями 1,2,3
        Dim arrDemo1(3) ΠΊΠ°ΠΊ строка
    
    End Sub 

    Однако я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ (ΠΈ ΠΌΠ΅Π½Π΅Π΅ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎ) просто явно ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ массивов.

    ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ VBA стало ΠΏΡ€ΠΎΡ‰Π΅

    ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ поиск ΠΊΠΎΠ΄Π° VBA Π² сСти. Π£Π·Π½Π°ΠΉΡ‚Π΅ большС ΠΎΠ± AutoMacro β€” конструкторС ΠΊΠΎΠ΄Π° VBA, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ с нуля с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ знаниями Π² области программирования ΠΈ мноТСством Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ врСмя для всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ!

    Π£Π·Π½Π°Ρ‚ΡŒ большС

    ДинамичСский массив

    ДинамичСскиС массивы β€” это массивы, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ (ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ).

    БущСствуСт Π΄Π²Π° способа объявлСния динамичСского массива.

    Variant Arrays

    ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ способ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ динамичСский массив β€” ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ массива Variant .

     Dim arrVar() As Variant 

    Π‘ Variant Array Ρ€Π°Π·ΠΌΠ΅Ρ€ массива ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. Π Π°Π·ΠΌΠ΅Ρ€ подстроится автоматичСски. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ массив начинаСтся с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ 0 (Ссли Π²Ρ‹ Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Option Base 1 Π² Π½Π°Ρ‡Π°Π»ΠΎ вашСго модуля)

     Sub VariantArray()
        Dim arrVar() ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
        
        'ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ значСния (Ρ€Π°Π·ΠΌΠ΅Ρ€ = 0,1,2,3)
        arrVar = Массив (1, 2, 3, 4)
        
        'Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ значСния (Ρ€Π°Π·ΠΌΠ΅Ρ€ = 0,1,2,3,4)
        arrVar = Массив("1а", "2а", "3а", "4а", "5а")
    
        'Выходная позиция 4 ("5a")
        MsgBox arrVar(4)
    
    ΠšΠΎΠ½Π΅Ρ† суб 
    НСвариантныС динамичСскиС массивы

    Для Π½Π΅Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½Ρ‹Ρ… массивов Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива ΠΏΠ΅Ρ€Π΅Π΄ присвоСниСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массиву. Однако процСсс создания массива Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ отличаСтся:

     Sub DynamicArray1()
        Dim arrDemo1() ΠΊΠ°ΠΊ строка
    
        'Π˜Π·ΠΌΠ΅Π½ΡΠ΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ массива с позициями 1,2,3,4
        ReDim arrDemo1 (ΠΎΡ‚ 1 Π΄ΠΎ 4)
        
    End Sub 

    Π‘Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ массив, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ статичСскому массиву, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ опускаСтС Ρ€Π°Π·ΠΌΠ΅Ρ€ массива:

     Dim arrDemo1() As String 

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

     'Π˜Π·ΠΌΠ΅Π½ΡΠ΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива с позициями 1,2,3,4
    ReDim arrDemo1(1 To 4) 

    ReDim измСняСт Ρ€Π°Π·ΠΌΠ΅Ρ€ массива. Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π½ΠΈΠΆΠ΅ ΠΎ Ρ€Π°Π·Π½ΠΈΡ†Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ReDim ΠΈ ReDim Preserve.

    ReDim ΠΏΡ€ΠΎΡ‚ΠΈΠ² ReDim Preserve

    ΠŸΡ€ΠΈ использовании ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ReDim Π²Ρ‹ удаляСтС всС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ значСния ΠΈΠ· массива. ВмСсто этого Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ReDim Preserve для сохранСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массива:

     'Π˜Π·ΠΌΠ΅Π½ΡΠ΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ массива с позициями 1,2,3,4 (сохранСниС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ)
    ReDim Preserve arrDemo1(1 To 4) 

    Π£ΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎΠ΅ объявлСниС массивов

    Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, послС прочтСния всСго Π²Ρ‹ΡˆΠ΅ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ чувствуСтС сСбя ΠΎΡˆΠ΅Π»ΠΎΠΌΠ»Π΅Π½Π½Ρ‹ΠΌ. Для простоты ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π² основном Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со статичСскими массивами Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° ΡΡ‚Π°Ρ‚ΡŒΠΈ.

    ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ VBA | Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° вас!

    Установка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массива

    Установка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массива ΠΎΡ‡Π΅Π½ΡŒ проста.

    Π’ случаС статичСского массива Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ массива ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π·Π° Ρ€Π°Π·:

     Sub ArrayExample()
        Dim strNames (ΠΎΡ‚ 1 Π΄ΠΎ 4) ΠΊΠ°ΠΊ строка
    
        strNames(1) = "Π¨Π΅Π»Π»ΠΈ"
        strNames(2) = "Π‘Ρ‚ΠΈΠ²"
        strNames(3) = "Нима"
        strNames(4) = "Π₯осС"
    End Sub 

    Π‘ Variant Array Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ вСсь массив ΠΎΠ΄Π½ΠΎΠΉ строкой (ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов):

     Sub ArrayExample_1Line()
        Dim strNames() ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
    
        strNames = Array("Π¨Π΅Π»Π»ΠΈ", "Π‘Ρ‚ΠΈΠ²", "Нима", "Π₯осС")
    
    End Sub 

    Если Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ располоТСния массива, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ сообщСниС ΠΎΠ± ошибкС Subscript Out of Range:

     strNames(5) = "Shannon" 

    Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«ΠΠ°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ массиву» Π½ΠΈΠΆΠ΅ ΠΌΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» для быстрого присвоСния большого количСства Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массивам.

    ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ массива

    Π’Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ значСния массива. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ запишСм значСния массива Π² ячСйки:

     Range("A1").Value = strNames(1)
        Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("A2"). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = strNames (2)
        Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("A3"). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = strNames (3)
        Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ("A4"). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = strNames (4) 

    ΠΠ°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ массиву

    Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ массиву, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»:

     Sub RangeToArray()
        Dim strNames (ΠΎΡ‚ 1 Π΄ΠΎ 60000) ΠΊΠ°ΠΊ строка
        Π”ΠΈΠΌ ΠΈ ΠΏΠΎΠΊΠ°
    
        Для я = 1 Π΄ΠΎ 60000
            strNames(i) = Cells(i, 1).Value
        Π”Π°Π»Π΅Π΅ я
    End Sub 

    Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ ячСйки A1: A60000, назначая значСния ячССк массиву.

    Π’Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ массив Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½

    Или Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» для присвоСния массива Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρƒ:

     Для i = 1 Π΄ΠΎ 60000
            Π―Ρ‡Π΅ΠΉΠΊΠΈ(i, 1).Value = strNames(i)
        Π”Π°Π»Π΅Π΅ я
     

    Π­Ρ‚ΠΎ сдСлаСт ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅: Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ значСния массива ячСйкам A1:A60000

    2D/ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

    Π”ΠΎ сих ΠΏΠΎΡ€ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ с ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ (1D) массивами. Однако массивы ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄ΠΎ 32 ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ.

    Π”ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ массивС 1D ΠΊΠ°ΠΊ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΉ строкС ΠΈΠ»ΠΈ столбцС ячССк Excel, ΠΎ массивС 2D, ΠΊΠ°ΠΊ ΠΎ Ρ†Π΅Π»ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ листС Excel с нСсколькими строками ΠΈ столбцами, Π° ΠΎ массивС 3D, ΠΊΠ°ΠΊ ΠΎ Ρ†Π΅Π»ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅, содСрТащСй нСсколько листов, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТит нСсколько строк ΠΈ столбцов. (Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС ΠΊΠ°ΠΊ ΠΎ ΠΊΡƒΠ±ΠΈΠΊΠ΅ Π ΡƒΠ±ΠΈΠΊΠ°).

    Автомакрос | ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ надстройка VBA | НаТмитС для бСсплатной ΠΏΡ€ΠΎΠ±Π½ΠΎΠΉ вСрсии!

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов

    Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ продСмонстрируСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами Ρ€Π°Π·Π½Ρ‹Ρ… размСрностСй.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ массива 1D

    Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ массивов Π² ΠΎΠ΄Π½Ρƒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, дСмонстрируя, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массивы Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅.

     ПодмассивEx_1d()
        Dim strNames (ΠΎΡ‚ 1 Π΄ΠΎ 60000) ΠΊΠ°ΠΊ строка
        Π”ΠΈΠΌ ΠΈ ΠΏΠΎΠΊΠ°
     
        'ΠŸΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ значСния массиву
        Для я = 1 Π΄ΠΎ 60000
            strNames(i) = Cells(i, 1).Value
        Π”Π°Π»Π΅Π΅ я
        
        'Π’Ρ‹Π²ΠΎΠ΄ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массива Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½
        Для я = 1 Π΄ΠΎ 60000
            Листы("Π’Ρ‹Ρ…ΠΎΠ΄"). Π―Ρ‡Π΅ΠΉΠΊΠΈ(i, 1).Value = strNames(i)
        Π”Π°Π»Π΅Π΅ я
    ΠšΠΎΠ½Π΅Ρ† суб 

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

    Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° содСрТит ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива:

     Sub ArrayEx_2d()
        Dim strNames (ΠΎΡ‚ 1 Π΄ΠΎ 60000, ΠΎΡ‚ 1 Π΄ΠΎ 10) ΠΊΠ°ΠΊ строка
        Dim i As Long, j As Long
     
        'ΠŸΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ значСния массиву
        Для я = 1 Π΄ΠΎ 60000
            Для j = ΠΎΡ‚ 1 Π΄ΠΎ 10
                strNames(i, j) = Cells(i, j).Value
            Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ j
        Π”Π°Π»Π΅Π΅ я
        
        'Π’Ρ‹Π²ΠΎΠ΄ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массива Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½
        Для я = 1 Π΄ΠΎ 60000
            Для j = ΠΎΡ‚ 1 Π΄ΠΎ 10
                Листы("Π’Ρ‹Ρ…ΠΎΠ΄").Π―Ρ‡Π΅ΠΉΠΊΠΈ(i, j).Value = strNames(i, j)
            Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ j
        Π”Π°Π»Π΅Π΅ я
    ΠšΠΎΠ½Π΅Ρ† суб 

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

    Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° содСрТит ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с нСсколькими листами:

     Sub ArrayEx_3d()
        Dim strNames (ΠΎΡ‚ 1 Π΄ΠΎ 60000, ΠΎΡ‚ 1 Π΄ΠΎ 10, ΠΎΡ‚ 1 Π΄ΠΎ 3) Π² Π²ΠΈΠ΄Π΅ строки
        Dim i As Long, j As Long, k As Long
     
        'ΠŸΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ значСния массиву
        Для ΠΊ = ΠΎΡ‚ 1 Π΄ΠΎ 3
            Для я = 1 Π΄ΠΎ 60000
                Для j = ΠΎΡ‚ 1 Π΄ΠΎ 10
                    strNames(i, j, k) = Sheets("Лист" & k). Cells(i, j).Value
                Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ j
            Π”Π°Π»Π΅Π΅ я
        Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ k
        
        'Π’Ρ‹Π²ΠΎΠ΄ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массива Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½
        Для ΠΊ = ΠΎΡ‚ 1 Π΄ΠΎ 3
            Для я = 1 Π΄ΠΎ 60000
                Для j = ΠΎΡ‚ 1 Π΄ΠΎ 10
                    Листы (Β«Π’Ρ‹Π²ΠΎΠ΄Β» ΠΈ k). Π―Ρ‡Π΅ΠΉΠΊΠΈ (i, j). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = strNames (i, j, k)
                Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ j
            Π”Π°Π»Π΅Π΅ я
        Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ k
    ΠšΠΎΠ½Π΅Ρ† суб 

    Автомакрос | ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ надстройка VBA | НаТмитС для бСсплатной ΠΏΡ€ΠΎΠ±Π½ΠΎΠΉ вСрсии!

    Π”Π»ΠΈΠ½Π°/Ρ€Π°Π·ΠΌΠ΅Ρ€ массива

    Π”ΠΎ сих ΠΏΠΎΡ€ ΠΌΡ‹ Π·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈ вас с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ массивов ΠΈ ΡƒΡ‡ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ массивы ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ/ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ значСния массива. Π”Π°Π»Π΅Π΅ ΠΌΡ‹ сосрСдоточимся Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Ρ‚Π΅ΠΌΠ°Ρ… для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами.

    Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ UBound ΠΈ LBound

    ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ шагом ΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡŽ Π΄Π»ΠΈΠ½Ρ‹/Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива являСтся использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ UBound ΠΈ LBound для получСния Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ ΠΈ Π½ΠΈΠΆΠ½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ† массива:

     Sub UBoundLBound()
        Dim strNames (ΠΎΡ‚ 1 Π΄ΠΎ 4) ΠΊΠ°ΠΊ строка
        
        MsgBox UBound(strNames)
        MsgBox LBound(strNames)
    End Sub 

    Π’Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… (ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ 1) даст Π²Π°ΠΌ Π΄Π»ΠΈΠ½Ρƒ:

     GetArrLength = UBound(strNames) - LBound(strNames) + 1 

    Ѐункция Π΄Π»ΠΈΠ½Ρ‹ массива

    Π’ΠΎΡ‚ функция для получСния ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Π΄Π»ΠΈΠ½Π° массива:

     ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Π°Ρ функция GetArrLength(a As Variant) As Long
       Если ΠŸΡƒΡΡ‚ΠΎ(Π°) Π’ΠΎΠ³Π΄Π°
          GetArrLength = 0
       Π•Ρ‰Π΅
          GetArrLength = UBound(a) - LBound(a) + 1
       ΠšΠΎΠ½Π΅Ρ†, Ссли
    Π—Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ 

    НуТно Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива? ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с нашим руководством: РасчСт Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива.

    ЦикличСский ΠΎΠ±Ρ…ΠΎΠ΄ массива

    БущСствуСт Π΄Π²Π° способа цикличСского ΠΎΠ±Ρ…ΠΎΠ΄Π° массива. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ Ρ†Π΅Π»Ρ‹Π΅ числа, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ числовым позициям массива. Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ:

     Sub ArrayExample_Loop1()
        Dim strNames (ΠΎΡ‚ 1 Π΄ΠΎ 4) ΠΊΠ°ΠΊ строка
        Π”ΠΈΠΌ ΠΈ ΠΏΠΎΠΊΠ°
    
        strNames(1) = "Π¨Π΅Π»Π»ΠΈ"
        strNames(2) = "Π‘Ρ‚ΠΈΠ²"
        strNames(3) = "Нима"
        strNames(4) = "Π₯осС"
        
        Для i = ΠΎΡ‚ 1 Π΄ΠΎ 4
            MsgBox strNames(i)
        Π”Π°Π»Π΅Π΅ я
    ΠšΠΎΠ½Π΅Ρ† суб 

    Однако, Ссли Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива (Ссли массив динамичСский), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ LBound ΠΈ UBound ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π°:

     Sub ArrayExample_Loop2()
        Dim strNames (ΠΎΡ‚ 1 Π΄ΠΎ 4) ΠΊΠ°ΠΊ строка
        Π”ΠΈΠΌ ΠΈ ΠΏΠΎΠΊΠ°
    
        strNames(1) = "Π¨Π΅Π»Π»ΠΈ"
        strNames(2) = "Π‘Ρ‚ΠΈΠ²"
        strNames(3) = "Нима"
        strNames(4) = "Π₯осС"
        
        Для i = LBound(strNames) To UBound(strNames)
            MsgBox strNames(i)
        Π”Π°Π»Π΅Π΅ я
    ΠšΠΎΠ½Π΅Ρ† суб 

    Автомакрос | ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ надстройка VBA | НаТмитС для бСсплатной ΠΏΡ€ΠΎΠ±Π½ΠΎΠΉ вСрсии!

    Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° массива

    Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ β€” с Ρ†ΠΈΠΊΠ»ΠΎΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ. Π­Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π² массивС:

     Sub ArrayExample_Loop3()
        Dim strNames (ΠΎΡ‚ 1 Π΄ΠΎ 4) ΠΊΠ°ΠΊ строка
        Вусклый ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚
    
        strNames(1) = "Π¨Π΅Π»Π»ΠΈ"
        strNames(2) = "Π‘Ρ‚ΠΈΠ²"
        strNames(3) = "Нима"
        strNames(4) = "Π₯осС"
        
        Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π² strNames
            Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ MsgBox
        Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт
    ΠšΠΎΠ½Π΅Ρ† суб 

    Π¦ΠΈΠΊΠ» For Each Array Loop Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивам.

    Π¦ΠΈΠΊΠ» Ρ‡Π΅Ρ€Π΅Π· Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив

    Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ UBound ΠΈ LBound для цикличСского просмотра ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ UBound ΠΈ LBound ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, для ΠΊΠ°ΠΊΠΎΠ³ΠΎ измСрСния массива Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΉΡ‚ΠΈ Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ ΠΈ ниТнюю Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ (1 для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ измСрСния, 2 для Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ измСрСния).

    Sub ArrayExample_Loop4()
        Dim strNames (ΠΎΡ‚ 1 Π΄ΠΎ 4, ΠΎΡ‚ 1 Π΄ΠΎ 2) ΠΊΠ°ΠΊ строка
        Dim i As Long, j As Long
    
        strNames(1, 1) = "Π¨Π΅Π»Π»ΠΈ"
        strNames(2, 1) = "Π‘Ρ‚ΠΈΠ²"
        strNames(3, 1) = "Нима"
        strNames(4, 1) = "Π₯осС"
        
        strNames(1, 2) = "Π¨Π΅Π»Π±ΠΈ"
        strNames(2, 2) = "Π‘Ρ‚ΠΈΠ²Π΅Π½"
        strNames(3, 2) = "НСмо"
        strNames(4, 2) = "ДТСсси"
        
        Для j = LBound(strNames, 2) To UBound(strNames, 2)
            Для i = LBound(strNames, 1) To UBound(strNames, 1)
                MsgBox strNames(i, j)
            Π”Π°Π»Π΅Π΅ я
        Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ j
    ΠšΠΎΠ½Π΅Ρ† суб 

    Π”Ρ€ΡƒΠ³ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ массива

    ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ массив

    Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ вСсь массив, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Erase:

     Erase strNames 

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования:

     Sub ArrayExample()
        Dim strNames (ΠΎΡ‚ 1 Π΄ΠΎ 4) ΠΊΠ°ΠΊ строка
    
        strNames(1) = "Π¨Π΅Π»Π»ΠΈ"
        strNames(2) = "Π‘Ρ‚ΠΈΠ²"
        strNames(3) = "Нима"
        strNames(4) = "Π₯осС"
    
        Π‘Ρ‚Π΅Ρ€Π΅Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° страниц
    End Sub 

    ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€, очистив Ρ‡Π°ΡΡ‚ΡŒ массива:

     ReDim strNames(1 to 2) 

    Π­Ρ‚ΠΎ измСняСт Ρ€Π°Π·ΠΌΠ΅Ρ€ массива Π΄ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° 2, удаляя ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ 3 ΠΈ 4.

    AutoMacro | ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ надстройка VBA | НаТмитС для бСсплатной ΠΏΡ€ΠΎΠ±Π½ΠΎΠΉ вСрсии!

    ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ массива

    Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ количСство ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΈ массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ UBound ΠΈ LBound (описанных Π²Ρ‹ΡˆΠ΅).

    Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ количСство Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… элСмСнтов (ΠΈΠ»ΠΈ элСмСнтов, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ критСриям), прокручивая массив.

    Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ количСство нСпустых строк, Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… Π² массивС:

     Sub ArrayLoopandCount()
        Dim strNames (ΠΎΡ‚ 1 Π΄ΠΎ 4) ΠΊΠ°ΠΊ строка
        Dim i As Long, n As Long
    
        strNames(1) = "Π¨Π΅Π»Π»ΠΈ"
        strNames(2) = "Π‘Ρ‚ΠΈΠ²"
        
        Для i = LBound(strNames) To UBound(strNames)
            Если strNames(i) <> "" Π’ΠΎΠ³Π΄Π°
                ΠΏ = ΠΏ + 1
            ΠšΠΎΠ½Π΅Ρ†, Ссли
        Π”Π°Π»Π΅Π΅ я
        
        MsgBox n & "ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Ρ‹ нСпустыС значСния."
    End Sub 

    Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹

    Π’ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹ ΠΈΠ· массива. К соТалСнию, VBA Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для этого. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΌΡ‹ написали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для удалСния Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠΈΠ· массива (ΠΎΠ½Π° слишком длинная, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π΅Π΅ Π² это руководство, Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΠΎ ссылкС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС).

    Π€ΠΈΠ»ΡŒΡ‚Ρ€

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

     Sub Filter_Match()
     
        'ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ массив
        Dim strNames ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
        strNames = Array("Π‘Ρ‚ΠΈΠ² Π‘ΠΌΠΈΡ‚", "Π¨Π΅Π½Π½ΠΎΠ½ Π‘ΠΌΠΈΡ‚", "Π Π°ΠΉΠ°Π½ ДТонсон")
     
        'Массив Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²
        Dim strSubNames ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
        strSubNames = Π€ΠΈΠ»ΡŒΡ‚Ρ€(strNames, "ΠšΡƒΠ·Π½Π΅Ρ†")
        
        'ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ массива
        MsgBox "НайдСно " и UBound(strSubNames) - LBound(strSubNames) + 1 & " имСна."
     
    ΠšΠΎΠ½Π΅Ρ† суб 

    Ѐункция IsArray

    Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ пСрСмСнная массивом, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ IsArray:

     Sub IsArrayEx()
    
        'Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ массив с позициями 1,2,3
        Dim arrDemo1(3) ΠΊΠ°ΠΊ строка
        
        'Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ ΡΡ‚Ρ€ΠΎΠΊΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ
        Dim str As String
        
        MsgBox IsArray(arrDemo1)
        MsgBox IsArray(строка)
    
    End Sub 

    Автомакрос | ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ надстройка VBA | НаТмитС для бСсплатной ΠΏΡ€ΠΎΠ±Π½ΠΎΠΉ вСрсии!

    ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΡΡ ΠΊ массиву

    Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ быстро Β«ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΒ» вСсь массив с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ присоСдинСния:

     Sub Array_Join()
        Dim strNames (ΠΎΡ‚ 1 Π΄ΠΎ 4) ΠΊΠ°ΠΊ строка
        Dim joinNames As String
    
        strNames(1) = "Π¨Π΅Π»Π»ΠΈ"
        strNames(2) = "Π‘Ρ‚ΠΈΠ²"
        strNames(3) = "Нима"
        strNames(4) = "Π₯осС"
        
        joinNames = ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΡΡ (strNames, ",")
        MsgBox
    End Sub 

    Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ строку Π½Π° массив

    Ѐункция раздСлСния VBA Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ строку тСкста Π½Π° массив, содСрТащий значСния ΠΈΠ· исходной строки. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

     Sub Array_Split()
        Dim Names () ΠΊΠ°ΠΊ строка
        DimjoinNames As String
        
        joinNames = "Π¨Π΅Π»Π»ΠΈ, Π‘Ρ‚ΠΈΠ², НСма, Π₯осС"
        ИмСна = Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ (ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°, ",")
    
        ИмСна MsgBox(1)
    End Sub 

    Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅ΠΌ эту строку тСкста Β«Π¨Π΅Π»Π»ΠΈ, Π‘Ρ‚ΠΈΠ², НСма, Π₯осС» Π½Π° массив (Ρ€Π°Π·ΠΌΠ΅Ρ€ 4), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ-Π·Π°ΠΏΡΡ‚ΡƒΡŽ (,).

    Const Массив

    Массив Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ объявлСн ΠΊΠ°ΠΊ константа Π² VBA. Однако Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ это, создав Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для использования Π² качСствС массива:

     ' ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ массив констант
    Ѐункция ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ²()
        ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ² = Массив(4, 12, 21, 100, 5)
    ΠšΠΎΠ½Π΅Ρ‡Π½Π°Ρ функция
    
    ' ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ConstantArray
    ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° получСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ()
        Массив констант MsgBox(3)
    End Sub 

    ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив

    НС сущСствуСт встроСнного способа копирования массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ VBA. ВмСсто этого Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» для присвоСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ массива Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ.

     Sub CopyArray()
    
        Dim Arr1 (ΠΎΡ‚ 1 Π΄ΠΎ 100) As Long
        Dim Arr2 (ΠΎΡ‚ 1 Π΄ΠΎ 100) As Long
        Π”ΠΈΠΌ ΠΈ ΠΏΠΎΠΊΠ°
        
        'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ массив1
        Для i = ΠΎΡ‚ 1 Π΄ΠΎ 100
            Арр1(я) = я
        Π”Π°Π»Π΅Π΅ я
        
        'ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠœΠ°ΡΡΠΈΠ²1 Π² Массив2
        Для i = ΠΎΡ‚ 1 Π΄ΠΎ 100
            Арр2(я) = Арр1(я)
        Π”Π°Π»Π΅Π΅ я
        
        Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Arr2(74)
    
    ΠšΠΎΠ½Π΅Ρ† суб 

    Автомакрос | ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ надстройка VBA | НаТмитС для бСсплатной ΠΏΡ€ΠΎΠ±Π½ΠΎΠΉ вСрсии!

    Π’Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ

    НСт встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ VBA, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив. Однако ΠΌΡ‹ написали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для транспонирования 2D-массива. ΠŸΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ ΡΡ‚Π°Ρ‚ΡŒΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС.

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

    Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ VBA часто Π·Π°Π΄Π°ΡŽΡ‚ вопрос, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΡƒΡŽ массив. Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ трудностСй Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Variant Arrays. ΠœΡ‹ написали ΡΡ‚Π°Ρ‚ΡŒΡŽ Π½Π° Ρ‚Π΅ΠΌΡƒ: Массив Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ VBA.

    ИспользованиС массивов в Access VBA

    Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² массивов Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Π² Access VBA, ΠΊΠ°ΠΊ ΠΈ Π² Excel VBA. Одно ΠΈΠ· основных ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ массив Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Access, Π²Π°ΠΌ потрСбуСтся ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ RecordSet, Π° Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Range.

     Sub RangeToArrayAccess()
       ΠŸΡ€ΠΈ ошибкС Π’ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π”Π°Π»Π΅Π΅
       Dim strNames() ΠΊΠ°ΠΊ строка
       Π”ΠΈΠΌ ΠΈ ΠΏΠΎΠΊΠ°
       Dim iCount As Long
       Dim dbs ΠΊΠ°ΠΊ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…
       Dim сначала ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ записСй
       УстановитС dbs = CurrentDb
       УстановитС сначала = dbs.OpenRecordset("tblClients", dbOpenDynaset)
       Π‘ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ
          .MoveLast
          .MoveFirst
          iCount = .RecordCount
          ReDim strNames (ΠΎΡ‚ 1 Π΄ΠΎ iCount)
          Для i = 1 для iCount
             strNames(i) = rst.Fields("Π˜ΠΌΡΠšΠ»ΠΈΠ΅Π½Ρ‚Π°")
             .MoveNext
          Π”Π°Π»Π΅Π΅ я
       ΠšΠΎΠ½Π΅Ρ† с
       рст.Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ
       Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ сначала = Π½ΠΈΡ‡Π΅Π³ΠΎ
       УстановитС dbs = НичСго
    ΠšΠΎΠ½Π΅Ρ† суб 

    Β 

    Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массив Π² VBA Π² Excel (простоС руководство)

    Главная / VBA / ΠœΠ°ΡΡΠΈΠ²Ρ‹

    ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹

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

    Как ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ массив Π² VBA

    Quick Notes

    массив с Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…

    ВСрновая информация ΠΈΠ· массива

    Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π±Π°Π·Ρ‹ 1

    Поиск

    0004

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

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

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

    Π’ΡΡŽ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² массивС Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡƒΡ‡Π΅Π½ΠΈΠΊΠ°, Π½ΠΎ ΠΈ для сотСн. Π’ΠΎΡ‚ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для объяснСния массива.

    Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρƒ вас Π΅ΡΡ‚ΡŒ массив ΠΈΠ· дСсяти элСмСнтов (Ρ€Π°Π·ΠΌΠ΅Ρ€ массива), ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ (индСкс).

    Π˜Ρ‚Π°ΠΊ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ элСмСнт, находящийся Π½Π° восьмой ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡΠ»Π°Ρ‚ΡŒΡΡ Π½Π° этот элСмСнт, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΅Π³ΠΎ порядковый Π½ΠΎΠΌΠ΅Ρ€.

    Массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ использовали Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, являСтся ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом. Но Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ Π² этом руководствС ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ·Π½Π°Π΅ΠΌ ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивах.

    Как ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ массив Π² VBA

    Как я ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π» Π²Ρ‹ΡˆΠ΅, массив β€” это Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, поэтому Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова (Dim, Private, Public ΠΈ Static). Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΏΡ€ΠΈ объявлСнии массива Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Ρƒ ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобок послС ΠΈΠΌΠ΅Π½ΠΈ массива.

    Допустим, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ использовали Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

    Шаги для объявлСния массива.

    • Π‘Π½Π°Ρ‡Π°Π»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Β«DimΒ», Π²Π²Π΅Π΄ΠΈΡ‚Π΅ имя массива ΠΈ скобки.
    • Π”Π°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… для массива. Если Ρƒ вас Π½Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, VBA Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ….
    • ПослС этого Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ количСство элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² массивС.
    • Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнту Π² массивС, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ порядковый Π½ΠΎΠΌΠ΅Ρ€ элСмСнта для Π΅Π³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΅ΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

    ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄

     Sub vba_array_example()
    Dim StudentNames(10) ΠΊΠ°ΠΊ строка
    StudentNames(0) = "Π’Π΅ΠΉΠ»ΠΎΠ½"
    StudentNames(1) = "ΠœΠΎΡ€Ρ‚ΠΎΠ½"
    StudentNames(2) = "Π ΡƒΠ΄ΠΎΠ»ΡŒΡ„"
    StudentNames(3) = "Π”ΠΆΠΎΡ€Π΄ΠΆΠΈΠ½"
    StudentNames(4) = "Π‘ΠΈΠ»Π»ΠΈ"
    StudentNames(5) = "Π­Π½ΠΈΠ΄"
    StudentNames(6) = "Π–Π΅Π½Π΅Π²ΡŒΠ΅Π²Π°"
    StudentNames(7) = "Π”ΠΆΡƒΠ΄ΠΈ"
    StudentNames(8) = "Мадалин"
    ИмСна студСнтов(9) = "Π­Π»Ρ‚ΠΎΠ½"
    End Sub 

    ΠšΡ€Π°Ρ‚ΠΊΠΈΠ΅ примСчания

    • Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ сначала имССтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Dim, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄ΠΎ 10 элСмСнтов ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ строковый Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ….
    • ПослС этого Ρƒ вас Π΅ΡΡ‚ΡŒ 10 строк ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ элСмСнты массива ΠΎΡ‚ 0 Π΄ΠΎ 9.

    Массив с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…

    ΠŸΡ€ΠΈ объявлСнии массива, Ссли Π²Ρ‹ Π½Π΅ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, VBA Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ нСбольшоС ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ использования памяти, ΠΈ это ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ использования памяти ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°.

    Π˜Ρ‚Π°ΠΊ, ΠΏΡ€ΠΈ объявлСнии массива Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Ссли Π½Π΅Ρ‚ нСобходимости ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ….

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

    Как я ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π» Ρ€Π°Π½Π΅Π΅, для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· массива Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ порядковый Π½ΠΎΠΌΠ΅Ρ€ элСмСнта для указания Π΅Π³ΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ. НапримСр, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ 8-ΠΉ элСмСнт Π² области, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ создали Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ:

    Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ Π²Ρ‹ Π²Π²Π΅Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ячСйку A1, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ элСмСнт 8 ΠΈΠ· массива. .

    Use Option Base 1

    Π― ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ этот вопрос прямо сСйчас, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ наш список элСмСнтов с нуля, Π° Π½Π΅ с ΠΎΠ΄Π½ΠΎΠ³ΠΎ?

    Π§Ρ‚ΠΎ ΠΆ, это Π½Π΅ ошибка.

    Когда Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π±Ρ‹Π»ΠΈ созданы языки программирования, нСкоторая Π½Π΅ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сдСлала эту структуру для пСрСчислСния элСмСнтов Π² массивС. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ языков программирования Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ структуру элСмСнтов списка.

    Однако, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… языков, Π² VBA Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ способ Ρ€Π°Π±ΠΎΡ‚Ρ‹ индСкса is, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ начинался с 1. ЕдинствСнноС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π° основС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ объявлСниСм массива.

    Π’Π΅ΠΏΠ΅Ρ€ΡŒ этот массив Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

    Поиск в массивС

    Когда Π²Ρ‹ сохраняСтС значСния Π² массивС, ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ поиска Π² массивС.

    Π’ этом случаС Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ взглянитС Π½Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² массивС.

     Sub vba_array_search()
    'Π² этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ массив ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ _
    Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π² массивС.
    Dim myArray(10) ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
    Dim i ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число
    Dim varUserNumber ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
    Dim strMsg ΠΊΠ°ΠΊ строка
    'Π­Ρ‚Π° Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° добавляСт 10 случайных чисСл ΠΊ _
    массив ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² _
    нСпосрСдствСнно ΠΎΠΊΠ½ΠΎ, Π° Ρ‚Π°ΠΊΠΆΠ΅.
    Для i = ΠΎΡ‚ 1 Π΄ΠΎ 10
    мой массив (i) = Int (Rnd * 10)
    Debug.Print myArray(i)
    Π”Π°Π»Π΅Π΅ я
    'это ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ число, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ.
    ΠŸΠ΅Ρ‚Π»Ρ:
    varUserNumber = ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° _
    ("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число ΠΎΡ‚ 1 Π΄ΠΎ 10 для поиска:", _
    «ДСмонстратор Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ поиска»)
    'это ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ IF, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ провСряСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ _
    Π²Π²Π΅Π»ΠΈ Π² ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π°.
    Если varUserNumber = "" Π’ΠΎΠ³Π΄Π° ΠšΠΎΠ½Π΅Ρ†
    Если Π½Π΅ IsNumeric (varUserNumber), Ρ‚ΠΎ GoTo Loopback
    Если varUserNumber < 1 ΠΈΠ»ΠΈ varUserNumber > 10, Ρ‚ΠΎ GoTo Loopback
    'сообщСниС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.
    strMsg = "Π’Π°ΡˆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, " & varUserNumber & _
    ", нС найдСно в массивС."
    'ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ массиву ΠΈ сопоставляСм ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с _
    Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ Π²Π²Π΅Π»ΠΈ Π² ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π°.
    Для i = 1 To UBound (myArray)
    Если myArray(i) = varUserNumber Π’ΠΎΠ³Π΄Π°
    strMsg = "Π’Π°ΡˆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, " & varUserNumber & _
    ", Π±Ρ‹Π» Π½Π°ΠΉΠ΄Π΅Π½ Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ " & i & " Π² массивС.