Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Новые возможности коллекции в VBA / Расширенный класс Collec - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Мир MS Excel » Вопросы и решения » Готовые решения » Новые возможности коллекции в VBA / Расширенный класс Collec (в помощь разработчикам и не только)
Новые возможности коллекции в VBA / Расширенный класс Collec
nerv Дата: Воскресенье, 22.07.2012, 22:09 | Сообщение № 1
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

Всем привет! )

Хочу положить в копилку палочку-выручалочку для решения повседневных задач - расширенный класс 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


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


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
Репутация: 193 ±
Замечаний: 0% ±

Update: 25.07.2012

+ Коллекцию можно перебирать используя цикл For Each
+ Метод AddUnique стал еще мощнее: раскрывает вложенные массивы и коллекции (степень и порядок вложенности значения не имеют)
+ Метод ToString стал еще мощнее: раскрывает вложенные массивы и коллекции (степень и порядок вложенности значения не имеют)
+ Исправлены потенциальные ошибки

p.s.: работа продолжается )
К сообщению приложен файл: __Collection.zip (26.9 Kb)


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


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% ±

Хорошая вещь hands Правда очень нехватает возможность получить значение key. А может автор еще какието вкусняшки за это время добавил?
 
Ответить
СообщениеХорошая вещь hands Правда очень нехватает возможность получить значение key. А может автор еще какието вкусняшки за это время добавил?

Автор - Poltava
Дата добавления - 01.10.2013 в 21:21
nerv Дата: Вторник, 01.10.2013, 23:49 | Сообщение № 4
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

Хорошая вещь

хорошая, но есть еще лучше )

Правда очень нехватает возможность получить значение key

допиши )

А может автор еще какието вкусняшки за это время добавил?

автор на vba больше не пишет (разве что иногда, в исключительных случаях), на другие языки перешел )


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


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 - Вторник, 01.10.2013, 23:57
 
Ответить
Сообщение
Цитата
хорошая, но есть еще лучше )
Имелось в виду что то конкретное?
Цитата
допиши )
К сожалению пока недорос еще, но может когда то в далеком будущем

Автор - Poltava
Дата добавления - 01.10.2013 в 23:57
nerv Дата: Среда, 02.10.2013, 13:05 | Сообщение № 6
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

Имелось в виду что то конкретное?

нет предела совершенству )


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba
 
Ответить
Сообщение
Имелось в виду что то конкретное?

нет предела совершенству )

Автор - nerv
Дата добавления - 02.10.2013 в 13:05
Мир MS Excel » Вопросы и решения » Готовые решения » Новые возможности коллекции в VBA / Расширенный класс Collec (в помощь разработчикам и не только)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!