Con ces = 1 recorres el recordset de valores por primera vez y lo dejas apuntando al final. Yo creo que te falla por que cuando lo haces para ces=2 y sucesivos no has vuelto a situar el cursor que recorre el recordser al inicio.
Añade estas lineas entes del bucle Do...Loop y creo que te irá bien
Código:
If not va.EOf Then
va.movefirst
End if
DO UNTIL va.EOF
...
Loop
Un saludo
Txarly