Here’s something I do in many pieces of code on this site. Let’s say that you have a list of things, lets say an array or a collection and you want to create a list of unique values. The .add() method of cJobject very handily only creates a child for new values.
Private Sub cjList() ' use cjobject to get a unique list Dim a As Variant, cj As New cJobject, j As cJobject, i As Long a = Array("a", "b", "c", "c", "d", "d", "e", "a") With cj.init(Nothing) For i = LBound(a) To UBound(a) .add CStr(a(i)) Next i End With For Each j In cj.children Debug.Print j.key Next j End Sub
That means that the above code, very usefully produces a list of unique values in the given array – a,b,c,d,e
Organizing into families
Even, better, cJobject can organize things into families.
Private Sub cjListFamily() ' use cjobject to get a unique list Dim a As Variant, cj As New cJobject, j As cJobject, i As Long, jj As cJobject a = Array("smith.john", "smith.mary", "jones.fred", "jones.tom", "white.chalky", "smith.tom") With cj.init(Nothing) For i = LBound(a) To UBound(a) .add CStr(a(i)) Next i Debug.Print .formatData End With End Sub
gives us
1.smith
1.smith.john
1.smith.mary
1.smith.tom
1.jones
1.jones.fred
1.jones.tom
1.white
1.white.chalky
See How to use cJobject for more on this useful object.
Take a look at One Liners for more tips like this.
In the meantime why not join our forum, follow the blog or follow me on Twitter to ensure you get updates when they are available. You can download this example in the cDataSet.xlsm from Downloads