Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Por kleinowski
Posts
#39864
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?
Avatar do usuário
Por Jimmy
Avatar
#39867
@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
Por osvaldomp
#39874
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
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord