Bom no seu código, a única coisa q ele faz quando dá um erro é exibir a mensagem do msgbox. Quando não há erro algum ele executa essas três linhas: Selection.Interior.ColorIndex = 6 UserForm4.Show exit sub Ou seja, na normalidade, as linhas acima são executadas. Caso haja erro ele executa o que está abaixo de "saida". Se você quer que o userform seja exibido quando há erro, então mude o código para: Private Sub CommandButton2_Click() On Error GoTo saida Selection.Interior.ColorIndex = 6 'aqui será sempre executado, se houver um erro nesse código ele pula para saida. exit sub saida: 'quando há erro o programa pula para essa linhha MsgBox "Antes de excluir dados clique em LANÇAMENTOS", , "CADASTRO DE CHEQUES" UserForm4.Show 'esse userform só será exibido se houver erro. End Sub Mas de qualquer forma, mande a planilha para analisar.