Ir ao conteúdo
  • Cadastre-se
kleysonr

VBA Excel - Problema quando exception acontece

Recommended Posts

Bom dia,

Nao sou expert em VBA e estou precisando resolver um problema que estou tendo.

O seguinte codigo:

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

If Not Intersect(Target, Range("A:A")) Is Nothing Then

x = 10 / 0

MsgBox ("ok")

End If

Application.EnableEvents = True

End Sub

É executado quando altero qualquer celula na coluna A.

Mas aqui eu estou forcando uma exception (Divisao por 0).

O problema é que quando uma exception acontece essa Sub para de funcionar, nao reconhece mais quando uma celula é alterada, e so volta a trabalhar quando eu fecho e abro o excel novamente.

Como eu posso resolver esse problema ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Flavio,

Eu ja havia tentado 'On Error GoTo ErrorHandle:' para tratar o error, que nao funcionou.

Mais pesquisando na internet eu encontrei o erro. O problema é que no inicio da Sub eu seto 'Application.EnableEvents = False', e quando o erro acontece em lugar nenhum mais eu seto pra True novamente. então so voltava a funcionar depois de fechar e abrir o excel.

então para resolver o problema, no bloco que trata o erro eu seto 'Application.EnableEvents = True' novamente, assim volta tudo ao normal.

Valeu !!

Compartilhar este post


Link para o post
Compartilhar em outros sites
você já experimentou usar uma rotina de tratamento de erro??

Coloque a linha abaixo em sua macro:

On error resume next

Em que parte da do código deve-se colocar On error resume next... E como proceder para fazer a busca pelo possível erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em que parte da do código deve-se colocar On error resume next... E como proceder para fazer a busca pelo possível erro?

No inicio do código. Esta função serve para, se der erro, seguir para a próxima linha do código.

Para tratar erros, você pode colocar tipo assim:

On error goto tratamento

esta linha diz para se tiver erro, ir para tratamento.

depois você coloca as rotinas para cada código de erro, tipo assim....

tratamento:

if err = 10 then ....

if err = 20 then ....

Pode usar também a função select.

Select Case Err

Case 10

....

Case 20

...

e por aí vai....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×