I'm trying to create 3 sublists from the main list itemlist
, but I can't find any way to achieve that. I've found a solution in python when I check out this link.
Sub CreateSubList()
Dim itemlist As Variant, itemNum As Variant
Dim oSublist As Variant
itemlist = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11")
'here I was expecting to create a variable holding sublist, as in oSublist which contains Array("1", "2", "3", "4")
'Array("5", "6", "7", "8") and Array("9", "10", "11") in each loop
'and finally iterate over the list in chunk to print the result
For Each itemNum In oSublist
Debug.Print itemNum
Next itemNum
End Sub
To be specific, I'm trying to mimic this in vba:
itemlist = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"]
for i in range(0, len(itemlist), 4):
chunk = itemlist[i:i + 4]
for n in chunk:
print(n)
It seems I'm very close to solve the issue.
Sub CreateSubList()
Dim itemlist As Variant, itemNum As Variant
Dim oSublist As Variant, iCol As Collection
Dim inum As Variant
Set iCol = New Collection
itemlist = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11")
For Each inum In itemlist
iCol.Add inum
If iCol.Count >= 3 Then
For Each itemNum In iCol
Debug.Print itemNum
Next itemNum
Debug.Print "---------------------"
Set iCol = Nothing
Set iCol = New Collection
End If
Next inum
End Sub
Output I'm getting:
1
2
3
---------------------
4
5
6
---------------------
7
8
9
---------------------
However, what is still unresolved is I can't capture the two items, as in 10
and 11
conditionally from the itemlist
.