Página 1 de 1

Parar Comando

Enviado: 07 Jan 2019 às 22:06
por kleinowski
Ola pessoal!
Tenho uma planilha que tem um Userform e um Módulo.
No módulo eu tenho um comando vba que compara os valores da planilha, se os valores estiverem diferentes ele pinta a celula de vermelho, no userform tenho umas checkbox. Quando eu clico em OK no Userform tenho um comando "Call Compara".
Os comandos funcionam tudo certo
O que eu quero é que quando ele encontrar alguma coisa diferente ele pare o comando.
Coloquei um Exit Sub, porem ele sai da operação "Compara" e continua executando alguns comandos do userform.
Queria que quando ele encontrasse uma divergencia ele parasse tudo.
Tem alguma maneira de fazer isso?

Parar Comando

Enviado: 07 Jan 2019 às 23:06
por Jimmy
@kleinowski,

Seria bom se você colocasse a planilha para análise para que a resposta que receberá seja mais segura.
Sem a plamilha, e apenas para não te deixar sem resposta, eu te diria para tentar usar o END no lugar do Exit Sub. Isso vai parar tudo, mas dependendo da forma como seu sistema foi desenhado, pode te gerar problemas.

Imagine, por exemplo, que a macro tenha desligado os eventos temporariamente, e vai tornar a liga-los após executar uns comandos. Ai tudo é encerrado por END antes que sejam religados. Os eventos podem não funcionar mais.

O mais correto é fazer a interrupção da macro conhecendo as implicações.

Jimmy San Juan

Re: Parar Comando

Enviado: 08 Jan 2019 às 07:30
por osvaldomp
Uma possibilidade é inserir uma variável global do tipo Boolean, assim, ao "encontrar alguma coisa diferente" o código Compara muda a variável para True e no código do Form coloque um If para testar a variável e se for True então encerra a execução.
Algo conforme abaixo.
Código: Selecionar todos
Option Explicit
Public c As Boolean

Sub Compara()
'blá

If "alguma coisa diferente" Then
 c = True
 Exit Sub
Elseif 'blá
Else: 'blá
End If

End Sub
Código: Selecionar todos
Sub DoForm()
 'blá

 If c Then
 'reseta eventos, se necessário
 Exit Sub
End if

 'blá
End Sub