Notifications
Clear all

Como cancelar uma sub através de um form? Laço não sai

5 Posts
3 Usuários
0 Reactions
1,080 Visualizações
 ti02
(@ti02)
Posts: 34
Eminent Member
Topic starter
 

A sub é a seguinte:

Sub cadastramento()

Dim chaveVerificadora As Integer
chaveVerificadoras = 0

Planilha2.Select
Planilha2.Range("A1").Select


Do
  If IsEmpty(ActiveCell.Offset(0, 6)) Then
     FormularioCodigo.txCodigo = ActiveCell.Offset(0, 3).Value
     FormularioCodigo.btPesquisar.Enabled = False
     FormularioCodigo.Show
     
     End If
     ActiveCell.Offset(1, 0).Select
 Loop Until IsEmpty(ActiveCell.Offset(0, 0)) = True
     

End Sub

O laço está numa sub, em um módulo.
Como a função do laço é fora do form, não tô conseguindo um meio de pará-la.
como fazer isso de dentro do form? não adianta colocar exit sub, pois o form executa "fora" da sub.

 
Postado : 09/03/2017 12:50 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Dependendo de onde vc coloca exit sub sim funciona.

Seja mais especifico de como pretende encerrar a execução.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 09/03/2017 1:00 pm
 ti02
(@ti02)
Posts: 34
Eminent Member
Topic starter
 

.

Desejo cancelar através de um botão, que fica no meu form FormularioCodigo.
Só que, a sub não é executada pelo form, o form é executado pela sub, que fica em um módulo.
Então quando coloco "exit sub" no botão dentro do form, nada acontece com a sub que fica no módulo.
Compreende?

 
Postado : 09/03/2017 1:04 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Crie uma variável global, que se chamará:

Public b_PARAR_CODIGO AS boolean

No código do botão, coloque:

b_PARAR_CODIGO =True
vba.Doevents

No meio do seu loop, coloque:

If b_PARAR_CODIGO then
Exit Sub
endif

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 09/03/2017 1:32 pm
 ti02
(@ti02)
Posts: 34
Eminent Member
Topic starter
 

Crie uma variável global, que se chamará:

Public b_PARAR_CODIGO AS boolean

No código do botão, coloque:

b_PARAR_CODIGO =True
vba.Doevents

No meio do seu loop, coloque:

If b_PARAR_CODIGO then
Exit Sub
endif

Não deu certo :(

olha o código que fiz:

Sub cadastramento()

Dim chaveVerificadora As Integer
chaveVerificadoras = 0

Planilha2.Select
Planilha2.Range("A4").Select


Do
If bParar = True Then
Exit Do
Else
  If IsEmpty(ActiveCell.Offset(0, 6)) Then
     FormularioCodigo.txCodigo = ActiveCell.Offset(0, 3).Value
     FormularioCodigo.btPesquisar.Enabled = False
     FormularioCodigo.Show
     End If
     ActiveCell.Offset(1, 0).Select
End If
 Loop Until IsEmpty(ActiveCell.Offset(0, 0)) = True
     

End Sub

Deixei a variável global fora desse módulo, no formulário.

 
Postado : 10/03/2017 10:27 am