Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
1 / 1 / 2
Регистрация: 03.04.2013
Сообщений: 48

Нужен совет по созданию заданного кол-ва массивов

03.04.2013, 17:20. Показов 2490. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Все привет.
В общем столкнулся с трудностью. Делаю вывод отчета в excel, и требуется чтобы в момент работы макроса создавались временные массивы типа Массив1, Массив2, и т.д. Количеств массивов может быть разным. Возможно такое реализовать, затык в том как имя массива через переменную задать? Я бы тогда создание к циклу привязал бы да и все.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.04.2013, 17:20
Ответы с готовыми решениями:

Нужен совет по созданию таблицы
Доброго всем дня! Парни, предположим я хочу создать таблицу albums (муз. альбомы) c такими полями: album_id, album_artist, album_title и...

Нужен совет по созданию игры
Здравствуйте планирую создать создать игру что-то промежуточное между аерохоккеем и футболом, знаю что надо будет использовать...

Нужен совет по созданию функции
Приветствую всех. Занимаюсь разработкой класса для работы с прибором на основе его протокола обмена. Прибор при получении запроса дает...

24
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
05.04.2013, 17:53
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Скрипт Посмотреть сообщение
получается, что в VBA-объекте "Collection" и объекте "Dictionary" из библиотеки "Windows Scripting Runtime" нельзя внести изменения в массив, а можно только узнать данные по нему?
Да.

В этой теме: Посчитать количество уникальных символов (чисел)
Igor_Tr дал ссылку на хорошую статью (на английском) про использование словаря:
Using the Dictionary Class in VBA
Я написал там комент как раз об этом.

Я объясняю это явление так. Свойство .Item словаря используется как для чтения, так и для записи, т.е. в терминах VB(A) у класса Dictionary есть Property Get Item() и Property Let Item(). Если свойство Item используется в левой части оператора присваивания непосредственно перед этим оператором, например
Visual Basic
1
Dic.Item("one") = y
, то компилятор VB(A) использует Property Let Item(). Если же свойство Item используется в выражении, например в индексировании массива
Visual Basic
1
Dic.Item("one")(0) = y
, то компилятор использует Property Get Item(), т.к. на этапе компиляции неизвестно, что содержится в этом свойстве и как его индексировать. При вызове Property Get Item() словарь создает КОПИЮ содержимого соответствующей записи (это массив) и возвращает эту копию. VB выполняет присваивание, а потом массив стирается как любая область памяти, используемая для хранения промежуточных результатов вычислений.
То, что присваивание производится, доказывает возникновение ошибки при присваивании значения, выходящего за пределы диапазона для данного типа:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub TestArrInDictionary()
Dim dic As Object, b() As Byte
ReDim b(0 To 1)     'Byte(0 to 1)
b(1) = 23
Set dic = CreateObject("scripting.dictionary")
dic("one") = b
Erase b             'Byte()
b = dic("one")      'Byte(0 to 1)
Debug.Print b(1)    '23
dic("one")(1) = 9
Debug.Print dic("one")(1)   '23, не поменялось
dic("one")(1) = 300         'Overflow!
End Sub
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
06.04.2013, 13:06
Скрипт,
Я сделал это сообщение в ответ на вопрос
И чтобы внести изменения, нужно заново поместить изменённый массив в коллекцию или словарь?
Нет! В словаре словарей не нужно. Можно просто менять в самом словаре

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Private Sub Комманда1_Click()
Set d = CreateObject("Scripting.Dictionary")
Randomize
Do While R < 100
' генерируем два числа
T = Int(Rnd * 10): K = Int(Rnd * 10)
 
If d.Exists(T) Then ' по первому числу внешний словарь
    Set W = d.Item(T)
    If W.Exists(K) Then
        W.Item(K) = W.Item(K) + 1
    Else
        W.Add K, 1
    End If
Else
    Set DR = CreateObject("Scripting.Dictionary")
    DR.Add K, 1
    d.Add T, DR
End If
R = R + 1
Loop
 
Debug.Print d(5)(5) ' 3  печатаем из пятого словаря пятый подсловарь
d(5)(5) = 15 ' назначаем
Debug.Print d(5)(5) ' 15 печатаем из пятого словаря пятый подсловарь изменённый
 
End Sub
0
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,578
06.04.2013, 13:12
Alex77755, речь шла о VBA-массивах в VBA-коллекции и словаре "Dictionary". А вы предлагаете использовать в словаре "Dictionary" словарь "Dictionary".
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
06.04.2013, 13:40
Как изменять item в словаре словаря - я уже на первой странице показал.
И как пополнять коллекцию - тоже.
0
1 / 1 / 2
Регистрация: 03.04.2013
Сообщений: 48
08.04.2013, 23:05  [ТС]
Цитата Сообщение от shanemac51 Посмотреть сообщение
за все годы работы первый раз --не понимаю задачи
совсем не понимаю
---
да еще с разными именами и вложенные
что-то с постановкой не так
Ну вы говорите как специалист программер, а я с этим vba в экселе столкнулся недели две назад. И соответственно приходиться задачу в лоб решать по ходу оперируя тем в чем смог разобраться или найти код и адаптировать под себя и чтоб работало. Ответы данной темы очень помогли задачу решил, конечно топорно и громоздко, но работает как надо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.04.2013, 23:05

Нужен совет по созданию высокопроизводительной БД
Всем доброго времени суток! Я до этого сталкивался только с небольшими по объёму проектами на MySQL и Firebird. Но сейчас появилась...

Нужен совет по созданию сети
Добрый день! прошу помочь грамотных людей в сетевой теме. У нас в компании около 12 компов, работают менеджеры. Все компы подключены...

Нужен совет по созданию службы
Здравствуйте! Есть написанная и работающая программа. Требуется сделать из нее службу windows. Почитав литературу, сделал следующее, в...

Нужен совет от профессионалов по созданию БД
Всем доброго времени суток. В общем есть такая задача: Нужно написать приложение, с помощью которого можно заносить данные в БД, а затем по...

Нужен совет по созданию карт
Приветствую. Такой вопрос, есть много онлайн игр, карты(игровые локации) для которых создаются не только разработчиками, но и сторонними...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи. . . .
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru