Массив пользовательского типа - объект для хранения именованных переменных и массивов различных размерностей с максимальной скоростью доступа - VBA

Узнай цену своей работы

Формулировка задачи:

Недавно открыл для своих целей всю мощь такого объекта. Решил поделиться. Цель: максимальная скорость доступа. минимальная нагрузка на оперативную память. не нужно запоминать имена переменных (подсвечиваются, если поставить точку). возможность хранить внутри каждого из индексов массива другой массив с динамически изменяющейся размерностью. возможность быстро очистить основной массив.
Листинг программы
  1. Option Explicit
  2. Type Lesson
  3. Дисциплина As String
  4. Аудитория As String
  5. Вид_занятия As String
  6. Преподаватель() As String
  7. End Type
  8. Sub Test()
  9. Dim Lesson() As Lesson 'Объявляем массив пользовательских типов
  10. Dim x As Long, y As Long
  11. y = 1
  12. x = 2
  13. 'В каждой клетке у нас много информации о дисциплине
  14. 'Поэтому будем эту информацию делить сразу и хранить в памяти в удобной форме для быстрого доступа
  15. 'Расширяем размерность на одну строку и 2 клетки (2 дисциплины)
  16. ReDim Lesson(1 To y, 1 To x)
  17. 'Дисциплину № 1 ведут 2 преподавателя
  18. ReDim Lesson(1, 1).Преподаватель(1 To 2)
  19. Lesson(1, 1).Дисциплина = "Огневая"
  20. Lesson(1, 1).Вид_занятия = "Экзамен"
  21. Lesson(1, 1).Аудитория = "ауд.333"
  22. Lesson(1, 1).Преподаватель(1) = "Петров"
  23. Lesson(1, 1).Преподаватель(2) = "Сидоров"
  24. 'Дисциплину 2 ведут 3 преподавателя
  25. ReDim Lesson(1, 2).Преподаватель(1 To 3)
  26. Lesson(1, 2).Дисциплина = "Тактика"
  27. Lesson(1, 2).Вид_занятия = "Курсовая работа"
  28. Lesson(1, 2).Аудитория = "ауд.111"
  29. Lesson(1, 2).Преподаватель(1) = "Петров"
  30. Lesson(1, 2).Преподаватель(2) = "Сидоров"
  31. Lesson(1, 2).Преподаватель(3) = "Иванов"
  32. 'Изменяем размерность подмассива
  33. Stop
  34. ReDim Preserve Lesson(1, 2).Преподаватель(1 To 2) 'Test OK
  35. 'Изменяем размерность главного массива
  36. Stop
  37. ReDim Preserve Lesson(1 To 1, 1 To 1) 'Test OK
  38. 'очистка подмассива
  39. Stop
  40. Erase Lesson(1, 1).Преподаватель 'Test OK
  41. 'очистка главного массива
  42. Stop
  43. Erase Lesson 'Test OK
  44. Stop
Поправьте меня, если для моих целей есть другой, более подходящий объект.

Решение задачи: «Массив пользовательского типа - объект для хранения именованных переменных и массивов различных размерностей с максимальной скоростью доступа»

textual
Листинг программы
  1. Private Type User_Type
  2.     l_arr() As Long
  3.     s_var As String
  4. End Type
  5.  
  6. Private Sub Form_Load()
  7.     Dim UT() As User_Type
  8.     ReDim UT(0)
  9.    
  10.     With UT(0)
  11.         ReDim .l_arr(1000)
  12.         .s_var = String$(1000, 0)
  13.     End With
  14.    
  15.     Debug.Print LenB(UT(0))
  16. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.727 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы