La verdad es que no entiendo muy bien ese código.
Estás abriendo continuamente (dentro del bucle) el recordset y no lo cierras con lo cual debería dar error y si no lo dá es porque nunca se cumple la condición If.
- Las tres veces estás condicionando la misma celda (x,y), por cierto variables sin declarar (acostumbra a poner la instrucción "Option Explicit" al principio del módulo, para que detecte este tipo de error).
- El recordset lo abres con una conexión (cnn) que no existe, ya que la conexión se llama "bd"
- Declaras una variable (i) que no se usa.
- En el recordset cargas un campo (Total) que no se utiliza.