Страницы: 1
RSS
Макрос для коллекций и сбора инфы в коллекции, возможность создать функцию CollectionCreate(ColName as String, DataAdd as Range)
 
Здравствуйте!

Есть мысль. Но не знаю, на сколько она реализуема.
Когда пишу макросы, часто приходится вновь и вновь писать код для создания коллекции и накопления в неё информации.

Так, вот, возможно ли написать sub, который бы это делал без лишнего гемора?
К примеру:
CollectionCreate(TESTCOLLECTION) - создать коллекцию с имененм "TESTCOLLECTION"
CollectionAdd(TESTCOLLECTION, 100) - добавляет 100 в коллекцию  "TESTCOLLECTION"
CollectionWrite(TESTCOLLECTION, sheet1, a1) - пишет всю инфу из коллекции "TESTCOLLECTION" на страницу "sheet1" ячейку "A1".

Я не прошу это написать, я просто хочу понять, это возможно?
Если да, то подскажите, направление - как это реализовать. То что я пробовал - не корректно. А правильно загуглить вопрос не получается, т.к. не могу коротко сформировать вопрос.
Изменено: SanShiney - 23.06.2016 10:10:50
 
Например
Код
Function CreatCollection(arr As Variant) As Collection
Dim Nm As New Collection
On Error Resume Next
    For I = LBound(arr) To UBound(arr)
        With Nm
            .Add arr(I, 1), CStr(arr(I, 1))
            If Err <> 0 Then Err.Clear
        End With
    Next
Set CreatCollection = Nm
End Function

Sub TestFunction()
Dim MyCollection As New Collection
    Set MyCollection = CreatCollection(Range("A1:A10").Value)
    For I = 1 To MyCollection.Count
        If colItems = Empty Then
            colItems = MyCollection(I)
        Else
            colItems = colItems & ", " & MyCollection(I)
        End If
    Next
    MsgBox "Items MyCollection: " & colItems, vbInformation + vbOKOnly
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Sanja, большое спасибо!
Я новичок. И не знал, что можно сделать таким образом:
Код
Function CreatCollection(arr As Variant) As Collection
Для меня это идеальный вариант!
Дальше буду экспериментировать с кодом!

Огромное спасибо!
Помогли!
Страницы: 1
Наверх