"Run-time error 424 - Object required" Your are saving a value type, not an object type. VB collections are read only. They only "collect" and do not expose their own "value" property. However, for a reference type that contains write-access properties, you can overcome this limitation. In essence, the reference to your object is read-only but not the properties of the object being referenced. This may seem like a lot of overhead creating custom objects but it is not and will produce code that is much easier to read and maintain. The first example is for explanation only. See the code comments. See the second example for a better way to solve your problem using a custom made object. The following examples are for illustration only.
CustomTypeInCollection.zip
Both of the following examples use a custom class created by adding a class module and adding this line of code. Name this class "MyCustomType".
<table border="1" bgcolor="White"><caption ALIGN=left>
<font size="2" face=Courier New>Example VBA Code:</FONT></caption><tr><td><font size="2" face=Courier New> <font color="#0000A0">Public</font> FieldCount <font color="#0000A0">As</font> <font color="#0000A0">Long</font>
</FONT></td></tr></table>
<table border="1" bgcolor="White"><caption ALIGN=left>
<font size="2" face=Courier New>Example VBA Code:</FONT></caption><tr><td><font size="2" face=Courier New> <font color="#0000A0">Sub</font> Example()
<font color="#0000A0">Dim</font> SummaryCount <font color="#0000A0">As</font> <font color="#0000A0">New</font> Collection
<font color="#0000A0">Dim</font> idxstr <font color="#0000A0">As</font> <font color="#0000A0">String</font>
<font color="#008000"> 'add three custom object that contain a single</font>
<font color="#008000"> 'public property, 1 as Long</font>
<font color="#008000"> 'assign 1, 2, and 3</font>
idxstr = "Key1"
SummaryCount.Add GetInstance(1), key:=idxstr
idxstr = "Key2"
SummaryCount.Add GetInstance(2), key:=idxstr
idxstr = "Key3"
SummaryCount.Add GetInstance(3), key:=idxstr
<font color="#008000"> 'output 1, 2, 3</font>
<font color="#0000A0">Debug.Print</font> SummaryCount("Key1").FieldCount
<font color="#0000A0">Debug.Print</font> SummaryCount("Key2").FieldCount
<font color="#0000A0">Debug.Print</font> SummaryCount("Key3").FieldCount
<font color="#008000"> 'add the custom objects value to it'self</font>
SummaryCount("Key1").FieldCount = SummaryCount("Key1").FieldCount + 1
<font color="#008000"> 'assign a value straight-away</font>
SummaryCount("Key2").FieldCount = 3
<font color="#008000"> 'assign a value straight-away</font>
SummaryCount("Key3").FieldCount = 4
<font color="#008000"> 'output 2, 3, 4</font>
<font color="#0000A0">Debug.Print</font> SummaryCount("Key1").FieldCount
<font color="#0000A0">Debug.Print</font> SummaryCount("Key2").FieldCount
<font color="#0000A0">Debug.Print</font> SummaryCount("Key3").FieldCount
<font color="#0000A0">End</font> <font color="#0000A0">Sub</font>
<font color="#0000A0">Private</font> <font color="#0000A0">Function</font> GetInstance(Value <font color="#0000A0">As</font> Long) <font color="#0000A0">As</font> MyCustomType
<font color="#0000A0">Set</font> GetInstance = <font color="#0000A0">New</font> MyCustomType
GetInstance.FieldCount = Value
<font color="#0000A0">End</font> <font color="#0000A0">Function</font>
</FONT></td></tr></table>
<table border="1" bgcolor="White"><caption ALIGN=left>
<font size="2" face=Courier New>Example VBA Code:</FONT></caption><tr><td><font size="2" face=Courier New> <font color="#0000A0">Sub</font> Example2()
<font color="#0000A0">Dim</font> SummaryCount <font color="#0000A0">As</font> <font color="#0000A0">New</font> Collection
AddField "Field_Item_1", SummaryCount
AddField "Field_Item_1", SummaryCount
AddField "Field_Item_1", SummaryCount
AddField "Field_Item_2", SummaryCount
AddField "Field_Item_2", SummaryCount
AddField "Field_Item_3", SummaryCount
<font color="#008000"> '3 occurrences</font>
<font color="#0000A0">Debug.Print</font> SummaryCount("Field_Item_1").FieldCount
<font color="#008000"> '2 occurrences</font>
<font color="#0000A0">Debug.Print</font> SummaryCount("Field_Item_2").FieldCount
<font color="#008000"> '1 occurrences</font>
<font color="#0000A0">Debug.Print</font> SummaryCount("Field_Item_3").FieldCount
<font color="#0000A0">End</font> <font color="#0000A0">Sub</font>
<font color="#0000A0">Private</font> <font color="#0000A0">Function</font> AddField(Field <font color="#0000A0">As</font> String, c <font color="#0000A0">As</font> Collection) <font color="#0000A0">As</font> MyCustomType
<font color="#0000A0">On</font> <font color="#0000A0">Error</font> <font color="#0000A0">Resume</font> <font color="#0000A0">Next</font>
<font color="#0000A0">Set</font> AddField = c(Field)
<font color="#0000A0">If</font> AddField <font color="#0000A0">Is</font> <font color="#0000A0">Nothing</font> <font color="#0000A0">Then</font>
<font color="#0000A0">Set</font> AddField = <font color="#0000A0">New</font> MyCustomType
AddField.FieldCount = 1
c.Add AddField, Field
<font color="#0000A0">Else</font>
AddField.FieldCount = AddField.FieldCount + 1
<font color="#0000A0">End</font> <font color="#0000A0">If</font>
<font color="#0000A0">End</font> <font color="#0000A0">Function</font>
</FONT></td></tr></table>