excel - Class initialization: difference between dim new and set new: attributes don't get updated -


i have class state has methods setstatename (sets name attribute), storebudgetworkbooks (sets , edits collection of strings), storebudgetdatas (sets , edits collection of other objects) , editresultworkbook (opens workbook , puts data collection of objects created storebudgetdatas inside it).

i have main sub makes use of class:

sub startgrabbings() ... statecount = lbound(statenames) ubound(statenames)               dim statecopy new state               statecopy.setstatename = statenames(statecount)               statecopy.storebudgetworkbooks               statecopy.storebudgetdatas               if statecopy.getemptydata = false                 call statecopy.editresultworkbook(resultworkbook, rowscount)                 rowscount = rowscount + 10               end if         next ... end sub 

but when open result workbook see data 1 state instance put under other states' names. can't understand reason of - create new copy of state class object, create , set inner collections , object, put data in result workbook. why data first state (but names other states updated).

however when declare class this, works fine:

sub startgrabbings()    ...    dim statecopy state         statecount = lbound(statenames) ubound(statenames)               set statecopy = new state               statecopy.setstatename = statenames(statecount)               statecopy.storebudgetworkbooks               statecopy.storebudgetdatas               if statecopy.getemptydata = false                 call statecopy.editresultworkbook(resultworkbook, rowscount)                 rowscount = rowscount + 10               end if         next ... end sub 

here class state:

private statename string private budgetworkbooks collection  '2014-2017, workbook private allbudgetitems collection '2014-2017, collection of collections of items private emptydata boolean private ratingdatas collection  public property let setstatename(value string)     statename = value end property  ...  private sub class_initialize()     set budgetworkbooks = new collection     set allbudgetitems = new collection     set ratingdatas = new collection     emptydata = false end sub  function storebudgetworkbooks()         dim year integer         year = 2014 2017             budgetworkbooks.add (getbudgetworkbook(year))         next end function  sub storebudgetdatas() ... dim year integer year = 2014 2017    ...    allbudgetitems.add getbudgetdata(budgetworkbook, year)    ... next ... end sub  function getbudgetdata(budgetworkbook workbook, year integer) ... dim budgetitems collection           set budgetitems = getbudgetitems(year)           dim budgetitem item           each budgetitem in budgetitems                  ... 'set attributes           next ... set getbudgetdata = budgetitems end function    sub editresultworkbook(resultworkbook workbook, rowscount long)         dim integer         = 1         dim year integer         year = 2014 2017              call fillbudgetresultworkbook(resultworkbook, allbudgetitems(i), _                          rowscount, statename, year)              = + 1          next end sub  sub fillbudgetresultworkbook(resultworkbook workbook, resultcollection variant, _                                 rowscount long, statename string, year integer)         ...         dim budgetitem item         each budgetitem in resultcollection             resultworkbook.worksheets("1").cells(i, 1).value = statename             resultworkbook.worksheets("1").cells(i, 2).value = budgetitem.gettitle()             resultworkbook.worksheets("1").cells(i, 3).value = budgetitem.getkind()             resultworkbook.worksheets("1").cells(i, j).value = budgetitem.getbudgetvalue()             ... end sub 

it looks while state attibutes, statename updated, others, collection of items - allbudgetitems don't... why happen , why second version of startgrabbings fixes it? seems come difference between dim object new objecttype , dim object objecttype, set object = new objecttype thought same thing.


Comments

Popular posts from this blog

angular - Ionic slides - dynamically add slides before and after -

minify - Minimizing css files -

Add a dynamic header in angular 2 http provider -