José, tinha uma época em que o pessoal escrevia aqui o "move l a s t " e apareceia movemax. Deve estar acontecendo o mesmo com o "move f i r s t"
Quanto ao fantasma, eu já tive problemas da variável recordset se perder durante o debug. Acho que é algum bug do VB. Hoje em dia eu passo o resultado do recordset para um array e trabalho com ele, até porque tenho o hábito de abrir o banco, executar a instrução e já fechar em seguida. Assim, com o array eu tenho os registros sem manter o banco aberto.
Se executando o seu código dá algum problema, pode ser realmente por causa do nulo e quando você vai debugar o recordset se perde. Para evitar o problema com o nulo, na sua instrução Replace(Trim(rstFonte.Fields(n)), "´", "'") você pode usar Replace(Trim(rstFonte.Fields(n) & ""), "´", "'") . Com o (& "") você transforma o nulo em vazio. Talvez isso resolva...