Hola! Si bien no es posible ejecutar For Each directamente sobre el ColumnView, hay varias formas de realizar un loop para que resulte fácil trabajar con cada fila por separado. Estas son las dos mas simples:
La primera consiste en un bucle for que vaya desde 0 hasta el número de elementos menos 1 (esto se debe a que se empieza a contar desde 0 y no de 1)
For iFila = 0 to ColulumnView1.Count-1
idProducto=ColulumnView1[iFila][0] ' Retorna el contenido de la celda (x, y)=(0, iFila)
nombreProducto=ColulumnView1[iFila][1] ' Retorna el contenido de la celda (x, y)=(1, iFila)
...
Next
La segunda consiste en un bucle que se ejecute hasta que ColumnView.MoveNext() = True (Hasta que no queden mas elementos por recorrer). En este caso el valor de la fila se debe incrementar manualmente.
Hablando del rendimiento, considero que el primero debería ser ligeramente mas eficiente, pero en los dos los resultados son iguales.
Espero que te sirva! Saludos!