Новые возможности коллекции в VBA / Расширенный класс Collec
nerv
Дата: Воскресенье, 22.07.2012, 22:09 |
Сообщение № 1
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Всем привет! ) Хочу положить в копилку палочку-выручалочку для решения повседневных задач - расширенный класс Collection. По сути своей он является модификацией стандартного Collection + содержит полезные удобняшки : ) Его состав: Add - стандартный нативный метод AddUnique - новый метод Count - стандартное нативное свойство Exists - новый метод Item - расширенный стандартный метод Remove - расширенный стандартный метод RemoveAll - новый метод Sort - новый метод ToArray - новый метод ToString - новый метод [vba]Code
'=================================== ' Данная коллекция (Collection_) включает как стандартные (расширенные) ' методы и свойства, так и добавленные (надеюсь, полезные). '=================================== ' Расширенные св-ва/методы: ' 1. Remove - возвращает удаленное значение ' (в стандартной коллекции просто удаление). ' Пример: col.Add True col.Add False x = col.Remove(2) ' <-- col.Remove (1) Stop '----------------------------------- ' 2. Item - позволяет не только читать, но и ' записывать значения (в стандартной реализации ' только чтение). Пример: ' добавляем значения, так же как и в нативную коллекцию col.Add 1 col.Add 2 ' меняем его col.Item(2) = col.Item(2) + 5 ' <-- Stop MsgBox col(2) ' свойство/метод по умолчанию Stop '=================================== ' Добавленные методы: ' 1. RemoveAll - удаляет все элементы из коллекции ' (аналогичен одноименному методу словаря). Пример: col.RemoveAll ' <-- MsgBox col.Count Stop '----------------------------------- ' 2. Exists - проверяет наличие элемента по ключу. ' Регистр имеет значение. Пример: col.Add False, "1" col.Add False, "0" MsgBox col.Exists(1) ' <-- MsgBox col.Exists("0") ' <-- MsgBox col.Exists(3) ' <-- Stop '----------------------------------- ' 3. ToString - формирует строку из элементов коллекции. ' Пример: ' добавляем значения col.Add 1 col.Add 2 col.Add 3 line = col.ToString() ' <-- Stop ' разделитель можно задавать (по умолчанию пробел) line = col.ToString(",") ' <-- Stop '----------------------------------- ' 4. ToArray - формирует массив из элементов коллекции. ' Пример: arr = col.ToArray() ' <-- Stop ' размерность массива можно задавать: одномерный/двумерный ' (по умолчанию двумерный) arr = col.ToArray(1) ' <-- Stop col.RemoveAll '----------------------------------- ' 5. AddUnique - добавляет в коллекцию уникальные значения. ' Пример: col.AddUnique (ActiveSheet.UsedRange.Cells) ' <-- Stop col.RemoveAll ' можно добавлять прямо из массива col.AddUnique (Array(1, 2, 3, 4, 5, 4, 3, 2, 1)) ' <-- Stop col.RemoveAll '----------------------------------- ' 6. Sort - сортирует элементы коллекции. Пример: col.AddUnique (ActiveSheet.UsedRange.Cells) ' добавили уникальные col.Sort ' <-- отсортировали по возрастанию Stop ' порядок сортировки пожно менять col.Sort (xlDescending) ' <-- xlDescending = 2 Stop
[/vba] Во вложении два файла: xls - демо (пробуем, тестируем) cls - для подключения в проект ссылка на обсуждение - http://www.planetaexcel.ru/forum.php?thread_id=43428
Всем привет! ) Хочу положить в копилку палочку-выручалочку для решения повседневных задач - расширенный класс Collection. По сути своей он является модификацией стандартного Collection + содержит полезные удобняшки : ) Его состав: Add - стандартный нативный метод AddUnique - новый метод Count - стандартное нативное свойство Exists - новый метод Item - расширенный стандартный метод Remove - расширенный стандартный метод RemoveAll - новый метод Sort - новый метод ToArray - новый метод ToString - новый метод [vba]Code
'=================================== ' Данная коллекция (Collection_) включает как стандартные (расширенные) ' методы и свойства, так и добавленные (надеюсь, полезные). '=================================== ' Расширенные св-ва/методы: ' 1. Remove - возвращает удаленное значение ' (в стандартной коллекции просто удаление). ' Пример: col.Add True col.Add False x = col.Remove(2) ' <-- col.Remove (1) Stop '----------------------------------- ' 2. Item - позволяет не только читать, но и ' записывать значения (в стандартной реализации ' только чтение). Пример: ' добавляем значения, так же как и в нативную коллекцию col.Add 1 col.Add 2 ' меняем его col.Item(2) = col.Item(2) + 5 ' <-- Stop MsgBox col(2) ' свойство/метод по умолчанию Stop '=================================== ' Добавленные методы: ' 1. RemoveAll - удаляет все элементы из коллекции ' (аналогичен одноименному методу словаря). Пример: col.RemoveAll ' <-- MsgBox col.Count Stop '----------------------------------- ' 2. Exists - проверяет наличие элемента по ключу. ' Регистр имеет значение. Пример: col.Add False, "1" col.Add False, "0" MsgBox col.Exists(1) ' <-- MsgBox col.Exists("0") ' <-- MsgBox col.Exists(3) ' <-- Stop '----------------------------------- ' 3. ToString - формирует строку из элементов коллекции. ' Пример: ' добавляем значения col.Add 1 col.Add 2 col.Add 3 line = col.ToString() ' <-- Stop ' разделитель можно задавать (по умолчанию пробел) line = col.ToString(",") ' <-- Stop '----------------------------------- ' 4. ToArray - формирует массив из элементов коллекции. ' Пример: arr = col.ToArray() ' <-- Stop ' размерность массива можно задавать: одномерный/двумерный ' (по умолчанию двумерный) arr = col.ToArray(1) ' <-- Stop col.RemoveAll '----------------------------------- ' 5. AddUnique - добавляет в коллекцию уникальные значения. ' Пример: col.AddUnique (ActiveSheet.UsedRange.Cells) ' <-- Stop col.RemoveAll ' можно добавлять прямо из массива col.AddUnique (Array(1, 2, 3, 4, 5, 4, 3, 2, 1)) ' <-- Stop col.RemoveAll '----------------------------------- ' 6. Sort - сортирует элементы коллекции. Пример: col.AddUnique (ActiveSheet.UsedRange.Cells) ' добавили уникальные col.Sort ' <-- отсортировали по возрастанию Stop ' порядок сортировки пожно менять col.Sort (xlDescending) ' <-- xlDescending = 2 Stop
[/vba] Во вложении два файла: xls - демо (пробуем, тестируем) cls - для подключения в проект ссылка на обсуждение - http://www.planetaexcel.ru/forum.php?thread_id=43428 nerv
Чебурашка стал символом олимпийских игр. А чего достиг ты? Тишина - самый громкий звук YM 41001156540584 / WM WMR R21924176233 https://github.com/nervgh/vba
Сообщение отредактировал nerv - Воскресенье, 22.07.2012, 22:28
Ответить
Сообщение Всем привет! ) Хочу положить в копилку палочку-выручалочку для решения повседневных задач - расширенный класс Collection. По сути своей он является модификацией стандартного Collection + содержит полезные удобняшки : ) Его состав: Add - стандартный нативный метод AddUnique - новый метод Count - стандартное нативное свойство Exists - новый метод Item - расширенный стандартный метод Remove - расширенный стандартный метод RemoveAll - новый метод Sort - новый метод ToArray - новый метод ToString - новый метод [vba]Code
'=================================== ' Данная коллекция (Collection_) включает как стандартные (расширенные) ' методы и свойства, так и добавленные (надеюсь, полезные). '=================================== ' Расширенные св-ва/методы: ' 1. Remove - возвращает удаленное значение ' (в стандартной коллекции просто удаление). ' Пример: col.Add True col.Add False x = col.Remove(2) ' <-- col.Remove (1) Stop '----------------------------------- ' 2. Item - позволяет не только читать, но и ' записывать значения (в стандартной реализации ' только чтение). Пример: ' добавляем значения, так же как и в нативную коллекцию col.Add 1 col.Add 2 ' меняем его col.Item(2) = col.Item(2) + 5 ' <-- Stop MsgBox col(2) ' свойство/метод по умолчанию Stop '=================================== ' Добавленные методы: ' 1. RemoveAll - удаляет все элементы из коллекции ' (аналогичен одноименному методу словаря). Пример: col.RemoveAll ' <-- MsgBox col.Count Stop '----------------------------------- ' 2. Exists - проверяет наличие элемента по ключу. ' Регистр имеет значение. Пример: col.Add False, "1" col.Add False, "0" MsgBox col.Exists(1) ' <-- MsgBox col.Exists("0") ' <-- MsgBox col.Exists(3) ' <-- Stop '----------------------------------- ' 3. ToString - формирует строку из элементов коллекции. ' Пример: ' добавляем значения col.Add 1 col.Add 2 col.Add 3 line = col.ToString() ' <-- Stop ' разделитель можно задавать (по умолчанию пробел) line = col.ToString(",") ' <-- Stop '----------------------------------- ' 4. ToArray - формирует массив из элементов коллекции. ' Пример: arr = col.ToArray() ' <-- Stop ' размерность массива можно задавать: одномерный/двумерный ' (по умолчанию двумерный) arr = col.ToArray(1) ' <-- Stop col.RemoveAll '----------------------------------- ' 5. AddUnique - добавляет в коллекцию уникальные значения. ' Пример: col.AddUnique (ActiveSheet.UsedRange.Cells) ' <-- Stop col.RemoveAll ' можно добавлять прямо из массива col.AddUnique (Array(1, 2, 3, 4, 5, 4, 3, 2, 1)) ' <-- Stop col.RemoveAll '----------------------------------- ' 6. Sort - сортирует элементы коллекции. Пример: col.AddUnique (ActiveSheet.UsedRange.Cells) ' добавили уникальные col.Sort ' <-- отсортировали по возрастанию Stop ' порядок сортировки пожно менять col.Sort (xlDescending) ' <-- xlDescending = 2 Stop
[/vba] Во вложении два файла: xls - демо (пробуем, тестируем) cls - для подключения в проект ссылка на обсуждение - http://www.planetaexcel.ru/forum.php?thread_id=43428 Автор - nerv Дата добавления - 22.07.2012 в 22:09
nerv
Дата: Среда, 25.07.2012, 21:30 |
Сообщение № 2
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Update: 25.07.2012 + Коллекцию можно перебирать используя цикл For Each + Метод AddUnique стал еще мощнее: раскрывает вложенные массивы и коллекции (степень и порядок вложенности значения не имеют) + Метод ToString стал еще мощнее: раскрывает вложенные массивы и коллекции (степень и порядок вложенности значения не имеют) + Исправлены потенциальные ошибки p.s.: работа продолжается )
Update: 25.07.2012 + Коллекцию можно перебирать используя цикл For Each + Метод AddUnique стал еще мощнее: раскрывает вложенные массивы и коллекции (степень и порядок вложенности значения не имеют) + Метод ToString стал еще мощнее: раскрывает вложенные массивы и коллекции (степень и порядок вложенности значения не имеют) + Исправлены потенциальные ошибки p.s.: работа продолжается )nerv
Чебурашка стал символом олимпийских игр. А чего достиг ты? Тишина - самый громкий звук YM 41001156540584 / WM WMR R21924176233 https://github.com/nervgh/vba
Сообщение отредактировал nerv - Среда, 25.07.2012, 22:09
Ответить
Сообщение Update: 25.07.2012 + Коллекцию можно перебирать используя цикл For Each + Метод AddUnique стал еще мощнее: раскрывает вложенные массивы и коллекции (степень и порядок вложенности значения не имеют) + Метод ToString стал еще мощнее: раскрывает вложенные массивы и коллекции (степень и порядок вложенности значения не имеют) + Исправлены потенциальные ошибки p.s.: работа продолжается )Автор - nerv Дата добавления - 25.07.2012 в 21:30
Poltava
Дата: Вторник, 01.10.2013, 21:21 |
Сообщение № 3
Группа: Друзья
Ранг: Форумчанин
Сообщений: 232
Репутация:
50
±
Замечаний:
0% ±
Хорошая вещь Правда очень нехватает возможность получить значение key. А может автор еще какието вкусняшки за это время добавил?
Хорошая вещь Правда очень нехватает возможность получить значение key. А может автор еще какието вкусняшки за это время добавил? Poltava
Ответить
Сообщение Хорошая вещь Правда очень нехватает возможность получить значение key. А может автор еще какието вкусняшки за это время добавил? Автор - Poltava Дата добавления - 01.10.2013 в 21:21
nerv
Дата: Вторник, 01.10.2013, 23:49 |
Сообщение № 4
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
хорошая, но есть еще лучше ) Правда очень нехватает возможность получить значение key
допиши ) А может автор еще какието вкусняшки за это время добавил?
автор на vba больше не пишет (разве что иногда, в исключительных случаях), на другие языки перешел )
хорошая, но есть еще лучше ) Правда очень нехватает возможность получить значение key
допиши ) А может автор еще какието вкусняшки за это время добавил?
автор на vba больше не пишет (разве что иногда, в исключительных случаях), на другие языки перешел ) nerv
Чебурашка стал символом олимпийских игр. А чего достиг ты? Тишина - самый громкий звук YM 41001156540584 / WM WMR R21924176233 https://github.com/nervgh/vba
Сообщение отредактировал nerv - Вторник, 01.10.2013, 23:50
Ответить
Сообщение хорошая, но есть еще лучше ) Правда очень нехватает возможность получить значение key
допиши ) А может автор еще какието вкусняшки за это время добавил?
автор на vba больше не пишет (разве что иногда, в исключительных случаях), на другие языки перешел ) Автор - nerv Дата добавления - 01.10.2013 в 23:49
Poltava
Дата: Вторник, 01.10.2013, 23:57 |
Сообщение № 5
Группа: Друзья
Ранг: Форумчанин
Сообщений: 232
Репутация:
50
±
Замечаний:
0% ±
Цитата
хорошая, но есть еще лучше )
Имелось в виду что то конкретное? К сожалению пока недорос еще, но может когда то в далеком будущем
Цитата
хорошая, но есть еще лучше )
Имелось в виду что то конкретное? К сожалению пока недорос еще, но может когда то в далеком будущемPoltava
Сообщение отредактировал Poltava - Вторник, 01.10.2013, 23:57
Ответить
Сообщение Цитата
хорошая, но есть еще лучше )
Имелось в виду что то конкретное? К сожалению пока недорос еще, но может когда то в далеком будущемАвтор - Poltava Дата добавления - 01.10.2013 в 23:57
nerv
Дата: Среда, 02.10.2013, 13:05 |
Сообщение № 6
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Имелось в виду что то конкретное?
нет предела совершенству )
Имелось в виду что то конкретное?
нет предела совершенству )nerv
Чебурашка стал символом олимпийских игр. А чего достиг ты? Тишина - самый громкий звук YM 41001156540584 / WM WMR R21924176233 https://github.com/nervgh/vba
Ответить
Сообщение Имелось в виду что то конкретное?
нет предела совершенству )Автор - nerv Дата добавления - 02.10.2013 в 13:05