Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.09.2014, 16:08   #1
Fadey001
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 19
Лампочка Добавление коллекции в коллецию

Всем привет.
Задача такая - Добавить коллекцию в коллекцию с ключами
Код:
'add first row
CollectionOne.add "Mark", "Name"
collectionOne.add "Park", "Surname"
CollectionOne.add 18, "Age"
'add to second collection
CollectionTwo.add CollectionOne
'clear first collection
Set CollectionOne = Nothing
'add second row
CollectionOne.add "Sting", "Name"
collectionOne.add "King", "Surname"
CollectionOne.add 50, "Age"
'add to second collection
CollectionTwo.add CollectionOne
Путем таких хитрых манипуляций получается эдакий многомерный массив
Теперь его можно обработать циклом For Each и будет счастье.
Например так:
Код:
For Each item in CollectionTwo
Msgbox item("name") & " " & item("surname") & " " & item("age")
Next
Получим два Месседж бокса и в каждом будет имя, фамилия и возраст.
Но это все лирика, а теперь внимание вопрос:
Как можно записать данные сразу во вторую коллекцию не создавая первой? И вообще можно ли это сделать?
А то плодить кучу переменных в большом проекте очень не хочется
Fadey001 вне форума Ответить с цитированием
Старый 02.09.2014, 16:28   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

все описанное реализовано в Tree View Control плюс есть возможность визуализировать это дерево коллекций, аналогично как структуру папок и файлов в Проводнике

Инет полон примеров по теме
Удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 02.09.2014, 16:51   #3
Fadey001
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 19
По умолчанию

Спасибо за быстрый ответ.
Да, это очень интересная вещь, и я даже знаю куда я ее засуну в другом проекте, спасибо огромное!
Но думаю в данном случае мне это не подойдет, так как нужно именно подобие именованных массивов с ключами, как во "взрослых" языках программирования
Fadey001 вне форума Ответить с цитированием
Старый 02.09.2014, 18:49   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

не пробовали использовать классы?
думаю, в вашем случае это именно то, что надо

экземпляр класса может содержать в себе экземпляры как других классов, так и самого себя

поищите в инете примеры использования классов в VBA
если с английским дружите - это можно поглядеть: http://www.cpearson.com/Excel/Classes.aspx

а вот здесь на картинках все описано:
http://stackoverflow.com/questions/1...in-a-similar-m
EducatedFool вне форума Ответить с цитированием
Старый 03.09.2014, 10:01   #5
Fadey001
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 19
По умолчанию

Вот как раз сейчас я и пишу класс который парсит данные с веб страницы, но что их можно использовать в таком качестве это для меня открытие. Век живи век учись! )))
Спасибо вам за ссылочки, добавил в закладки.
Но наверно в моем случае лучше будет все таки делать так, потому как заранее не известно сколько будет элементов в коллекции, и не известно сколько нужно будет создать экземпляров класса. Наполнение коллекции тоже происходит в цикле.
Но конечно и таким способом можно сделать если включить мозги, но мне видится что для этого потребуется больше кода чем есть у меня сейчас, а идея была как раз в том что бы уменьшить код. В идеале до одной строчки в цикле.
Всем спасибо за ответы.
P.S. зашел спросить про один вопрос, а получил ответ на другие вопросы на которые когда то не смог найти ответов))))
Fadey001 вне форума Ответить с цитированием
Старый 03.09.2014, 23:42   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Но наверно в моем случае лучше будет все таки делать так, потому как заранее не известно сколько будет элементов в коллекции
а чем отличается создание экземпляра класса от создания нового элемента в коллекции?
то, что 2 строки кода вместо одной?
зато потом работать с классами намного удобнее

Цитата:
идея была как раз в том что бы уменьшить код
а зачем? байты экономите, теряя в удобстве и производительности?
может, тогда к ассемблеру стоит присмотреться?)
EducatedFool вне форума Ответить с цитированием
Старый 04.09.2014, 10:41   #7
Fadey001
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 19
По умолчанию

EducatedFool полностью согласен с вами, дело в том что пишу не для себя, а для людей которые не умеют работать с классами)))
Быстро научить их писать что нибудь вроде этого легко
Код:
Dim Tools as new ToolsClass
Tools.pasing("parameter")
Range("A1").value = Tools.date
Range("B1").value = Tools.title
Range("C1").value = Tools.number
А вот как работать с классами, сомневаюсь.
Тем более что люди за 5 лет сами так и не научились
Fadey001 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
коллекции RAIDER_90 Общие вопросы по Java, Java SE, Kotlin 1 17.04.2012 22:02
коллекции Джава tanya_m43 Помощь студентам 1 28.01.2012 02:24
Java коллекции programmm Помощь студентам 0 12.11.2011 22:37
Коллекции van-ok Помощь студентам 0 25.12.2009 01:47
Коллекции Mike777 Общие вопросы Delphi 0 19.02.2007 11:38