Зараз обговорюють

"Тобто є ряд завдань, які взагалі без рекурсії не наважуються."  - це як розуміти? Перефразуй, будь ласка. 

виправив, йшлося про те що деякі завдання можна вирішити лише при використанні рекурсії

Спасибі дуже корисна стаття

А ще щось планується подібного найближчим часом?


Дякую за підтримку, радий що Вам сподобалось!

Так маю вже майже дороблений проект по управлінні Audio файлом, на заміну стандартним клавішам управління HTML5, але ще не встиг відтестувати програвання файлів з інтернету, поки лише локально працює

Надіюсь найближчим часом дороблю й закину

Рахунки

webmoneyeur - E385818210641
usd - Z304643423050
uah - U354026817492
rub - R301704373231easypay80002677bitcoin1F5HRGroUtEQW9HBNbeew8iKh5KQ8vJxzw

Зворотній зв'язок

Для покращення роботи сайту надсилайте свої зауваження:
mailЗауваження
mailПропозиція

Статистика

UkrNET - поисково-информационный ресурс

VBA : Використання Collections

Колекція - це тип, що містить набір пов'язаних об'єктів - у пам'яті. Типи збірки дуже корисні, оскільки легко додати до нього елементи та ітерації над елементами колекції для будь-якої мети, яку ви маєте на увазі. Спеціалізовані типи збірки використовуються в програмах Office. У MS Access, наприклад, Recordset може бути збірка записів у таблиці, колекція Forms містить всі відкриті форми, Workbooks - відкриті книги і т.д.

Створення колекції

Змінна колекції повинна бути створена як "New" колекція. Як правило, код для створення колекції виглядає так:

Dim Workers As Collection
Set Workers = New Collection 

або

Dim Workers As New Collection 

Індексація елементів колекції починається із індексом 1

Властивості та методи

Add

Дозволяє додавати елементи до колекції:

colData.Add "Apple"
colData.Add 45
colData.Add #12/12/2017#

Також в колекцію можна додавати власні об'єкти. Ми додамо зараз клас Worker із 3-ма полями, які будуть його характеризувати, Ви в свою чергу можете створювати власні класи та об'єднювати їх в колекції:

Dim Workers As New Collection
Dim newWorker As Worker
    arr = Array(Array("Петренко Петро Петрович", "46", "Робітник IV розряду"), Array("Іванов Іван Іванович", "32", "Робітник IІІ розряду"))
    For i = 1 To 2
        temtArr = arr(i - 1)
        Set newWorker = New Worker
        With newWorker
            .Name = temtArr(0)
            .Age = temtArr(1)
            .Qualification = temtArr(2)
        End With
        Workers.Add newWorker
    Next i
    Debug.Print Workers(2).Qualification ' Робітник IІІ розряду '

Також можна додавати необов'язкові параметри:

Key - для швидкого доступу до елемента, щоб не шукаючи його індекс

Workers.Add newWorker, "Петренко Петро Петрович" 

тепер по імені користувача можемо шукати працівника в колекції

Debug.Print Workers("Петренко Петро Петрович").Qualification

Before - дозволяє додати елемент перед вказаним індексом (колекція не може бути пустою)

Workers.Add newWorker, temtArr(0), 1

After - дозволяє додати елемент після вказаного індексу (колекція не може бути пустою)

Workers.Add newWorker, temtArr(0), after:=1

Count

Повертає кількість елементів в колекції

Item

Дозволяє отриманти значення елемента колекції по вказаному індесу/ключу

Debug.Print Workers.Item(1).Qualification
Debug.Print Workers.Item("Петренко Петро Петрович").Qualification

Remove

Дозволяє видаляти елемент із колекції по вказаному індесу/ключу

Workers.Remove 1
Workers.Remove ("Петренко Петро Петрович")

Примітка: при видаленні елемента із колекції відбудеться зміщення усіх індексів, які були після видаленого елемента, на -1

Реалізація додаткових можливостей

Повне очищення колекції

Так як в колекції, за замовчуванням, немає реалізованого методу RemoveAll то можна скористатись одним із двох варіантів очищення:

- спосіб 1

Set Workers = Nothing

- спосіб 2

For i = Workers.Count To 1 Step -1
    Workers.Remove i
Next i 

Перезаписання елемента колекції

Усі елементи колекції доступні лише для читання! Тож якщо необхідно перезаписати певний елемент потрібно його видалити, а потім додати новий.

Перевірка наявності елемента в колекції

Для перевірки існування елемента можна застосувати просту функцію, яка буде повертати булеве значення:

Function ColElExist(col As Collection, index As Integer) As Boolean
    On Error Resume Next
    col.Item index
    ColElExist = (Err.Number = 0)
End Function 

де col - колекція яку перевіряємо, а index - номер елемента який потрібно знайти в колекції

Тепер в коді макросу можна легко перевірити:

If ColElExist(Workers, 3) Then MsgBox "Ok" Else MsgBox "Missing item" ' виконається блок Else так як в нас лише 2-а елементи в колекції' 

Примітка: дана функція дозволить обробити помилки при доступі до відсутніх елементів колекції, що забезпечить стабільне виконання коду.


view305like1dislike0 avatard_l4w clock 2017-12-28 06:29

Коментарі:



Для даної статті відсутні коментарі

Про нас

"Programmers World" розроблено з метою полегшення в освоєнні навичок програмування, та поширення матеріалів з сфери ІТ Українською мовою.

Кожен бажаючий може безкоштовно користуватися ресурсами сайту, щоб:

- Вивчати теоретичні аспекти мов програмування

- Переглядати практичне застосування теорії при виконанні різних міні проектів з відкритим кодом

- Розміщати свої завдання на форумі для допомоги в їх реалізації, або готового коду який може бути корисний іншим користувачам

- Спілкуватись з іншими користувачами та обмінюватись досвідом

Сайт функціонує на безопланій основі та ентузіазмі розробника, якщо Ви бажаєте долучитись до розвитку даного проекту то можете пожертвувати кошти на рахунки розміщені в блоці "Допомога сайту".

Сайт

Зареєстровані користувачі можуть скористатися системою діалогів, в профілі користувача, для отримання потрібної інформації. Написати!

Також Ви можете використати форми відправки Зауважень та Пропозицій.


Електронна пошта

Ви можете звертатись на нашу поштову скриньку site.programmersworld@gmail.com

www.000webhost.com