Collection - object required message

G

Guest

I would like to add things in my collection but doesn't work all the time.

If I write:
Dim C as New Collection
For j = 1 To 10
C.Add Cells(j,5), Cells(j,5)
Next j
C(2) = C(1) 'this works

If I want to add other things then cells(j,5), it doesn't work
Dim C as New Collection
Dim D as New Collection
Dim Temp as Object
For j = 1 To 10
Temp = "A->C" 'Temp = Nothing ?
Temp2 = "A->C" 'Temp2 is not empty
C.Add Temp, Temp 'doesn't work because Temp is empty
D.Add Temp2, Temp2 'seems to work but D(2) = D(1) doesn't work (object
required)
Next j
 
T

Tom Ogilvy

Dim Temp as Variant or String, not as Object

Dim C as New Collection
Dim D as New Collection
Dim Temp as Variant
Dim Temp2 as Variant
For j = 1 To 10
Temp = "A->C" 'Temp = Nothing
Temp2 = "A->C"
C.Add Temp, cStr(Temp)
D.Add Temp2, cStr(Temp2)
Next j
 
G

Guest

Hi Toms,
It gives an error message when I try to replace C(1) by C(2).

Dim Temp as String
For j = 1 to 100
Temp = Cells(j, 3) & "->" & Cells(j, 4)
C.Add Temp, CStr(Temp)
Next j
a = C(1)
b = C(2)
On Error GoTo 0
For iCtr = 1 To C.Count - 1 'Tri vecteur
For jCtr = iCtr + 1 To C.Count
If C(iCtr) < C(jCtr) Then
Temp = C(iCtr)
C(iCtr) = C(jCtr) 'C(1) = C(2) gives error message object is
required?
' C(1) = "A->.*" and C(2) = "A->A"
C(jCtr) = Temp
End If
Next jCtr
Next iCtr
 
T

Tom Ogilvy

Sub AA()
Dim C As New Collection
Dim Temp As String
On Error Resume Next
For j = 1 To 100
Temp = Cells(j, 3) & "->" & Cells(j, 4)
C.Add Temp, CStr(Temp)
Next j
a = C(1)
b = C(2)
On Error GoTo 0
For ictr = 1 To C.Count - 1 'Tri vecteur
For jctr = ictr + 1 To C.Count
If C(ictr) < C(jctr) Then
Temp = C(ictr)
Temp1 = C(jctr)
C.Add Temp, Before:=jctr
C.Add Temp1, Before:=ictr
C.Remove ictr + 1
C.Remove jctr + 1
End If
Next jctr
Next ictr


End Sub
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top