Fabiosp,
Bom Dia!
Não da para testar seu código somente com esse pedaço do mesmo. Entretanto, até onde consegui entender, seu código faz o seguinte: quando você digita qualquer coisa no intervalo A1:B3, você captura o valor da célula atual (Target.Value) e verifica que valor esse para, em seguida, chamar uma das rotinas que deseja. As rotinas de impressão, salvamento e fechamento da planilha estão logo após o End If.
O que eu acho que está ocorrendo: Quando já existe algum valor digitado naquele intervalo e você digita um novo valor, a execução pula logo para a primeira linha depois do End If e executa as rotinas de impressão, salvamento e fechamento da planilha pois, no caso, a linha If Not Intersect(Target, Range("A1:B3")) Is Nothing Then passa a ser FALSA e, portanto, a execução salta todo o conteúdo que está entre o IF e o End IF.
Se for isso, você precisa alterar a lógica da sua programação.
Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)
Atenciosamente
Wagner Morel
Postado : 30/01/2014 5:37 am