VBA - INTERROMPER TOTALMENTE O CODIGO

ALELUIZ 21/06/2011 14:24:49
#377388
Prezados,

é possvivel interromper totalmente a execução do código ex:

sub chama1()
chamasubdois
end sub
sub chamasubdois()

Paratudo
[ô]gostaria de para o código de uma forma que ele não continue executando , se eu colocar exit sub ele retorna para a sub chama1
end sub
LLAIA 21/06/2011 14:33:21
#377392
Vc pode colocar o End em vez de Exit Sub.
LREZANI 21/06/2011 14:48:41
#377398
Tente assim:

Private Sub Teste1()
[ô]aqui chama a função teste2 e analisa o resultado, se falso sai da sub
If Not Teste2 Then Exit Sub
End Sub

Private Function Teste2() As Boolean

[ô]Para fechar a função e interromper a execução da sub1
if <Condição> then
Exit Function [ô]valor padrão de teste2 é false
End If

[ô]para continuar a execução da sub1
if <Condição> then
Teste2 = True
Exit Function
End If

End Function


Qualquer dúvida informe.
Sds.
ALELUIZ 21/06/2011 15:19:08
#377411
Citação:

:
Vc pode colocar o End em vez de Exit Sub.



Fecha toda aplicação inclusive o form


Citação:

:
Mas o end ele fecharia tudo inclusive a app, o mais correto é o exit sub ou end sub pois assim ele iria sair do processo e continuar o restante das sintaxes, me corrijam se estiver errado.



Ai é que está o [Ô]X[Ô] não quero continuar a sintaxe e continuar com o Form aberto
Citação:

:
Tente assim:


Private Sub Teste1()
[ô]aqui chama a função teste2 e analisa o resultado, se falso sai da sub
If Not Teste2 Then Exit Sub
End Sub

Private Function Teste2() As Boolean

[ô]Para fechar a função e interromper a execução da sub1
if <Condição> then
Exit Function [ô]valor padrão de teste2 é false
End If

[ô]para continuar a execução da sub1
if <Condição> then
Teste2 = True
Exit Function
End If

End Function


Qualquer dúvida informe.
Sds.



o Código continua e retorna a Teste1(), minha idéia é inteomper sem retorno a sub que a chamou.



LREZANI 21/06/2011 15:36:44
#377416
Então, neste caso ele retorna para a função que a chamou e não executa mais nada na rotina simplesmente saindo dela.
Não vejo outra alternativa, pois o VB sempre vai voltar para a função anterior a da chamada.
Você executou o código?
Coloque um command e depois cole o código abaixo para testar.

  
Private Sub Command1_Click()
[ô]aqui chama a função teste2 e analisa o resultado, se falso sai da sub
If Not Teste2 Then
MsgBox [Ô]interrompe o código da sub[Ô]
Exit Sub
End If

MsgBox [Ô]Continua o código da sub[Ô]

End Sub

Private Function Teste2() As Boolean

resp = MsgBox([Ô]Deseja continuar a sub Command1?[Ô], vbQuestion + vbYesNo)
If resp = 7 Then
[ô]fechar a função e interrompe a execução da sub command1
Exit Function [ô]valor padrão de teste2 é false
Else
[ô]para continuar a execução da sub1
Teste2 = True
Exit Function
End If

End Function
MARCELO.TREZE 21/06/2011 15:45:32
#377421
assim

no general

Dim Continua As Boolean

sub chama1()
If Continua = True Then
chamasubdois
End If
end sub

sub chamasubdois()
Paratudo
Continua = False
Exit Sub
end sub
ALELUIZ 21/06/2011 15:53:14
#377423
LREZANI
Testei o acima, o problema que estou tendo, é que o campo que recebe o foco acaba sendo perdendo o foco em seguida pois a sub que o chama é

Private Sub WebBrowser2_DocumentComplete(ByVal pDisp As Object, URL As Variant)
pegadados2 [ô] ésta sub é executada quando a página é carregada
[ô]depois que roda o pegadados ele retorna nesta sub , já fiz de tudo para o txcliente ficar com o foco mas o foco sempre acaba no WebBrowser2 ooo vida rssr
If clagencia.Caption = [Ô]OK Encaminhar[Ô] Then
BTSalvar_Click
End If
txcliente.SetFocus
End Sub
MARCELO.TREZE 21/06/2011 15:55:28
#377424
só fiquei com duvida em uma coisa

é estranho para isto funcionar

Sub A()
Chama_Sub_B
End Sub

Sub B()
Chama_ Sub_C
End Sub

Sub C()
Chama_Sub_A
End Sub

A pergunta como vc está mantendo este ciclo? é da forma que mostrei acima, é dentro de um timer? ou seja como?
ALELUIZ 21/06/2011 16:04:43
#377426
Ola Nobre Marcelo, Não estou matendo o ciclo, na verdade quero quebra-lo.....

Sub A()
Chama_Sub_B [ô] ok
End Sub

Sub B()
não chama mais nehuma sub, mas ao finalizar, ela retorna para a sub A, isso que eu não queria , gostaria de interromper sem que ela volta-se a sub [Ô]A[Ô] que a chamou.

End Sub

ASHKATCHUP 21/06/2011 16:17:08
#377432
Cria uma variável do form pra controlar isso.
Quando vc quiser parar, seta ela.



Dim varParaTodaEssaPorra as Boolean

Private sub diabolic1()
VarParaTodaEssaPorra = false
[ô]... faz altas gambiarras do demonio aqui
maracutaia()
[ô]
If varParaTodaEssaPorra then Exit Sub
End sub

private sub maracutaia()
if 1 + 1 = 2 then
varParaTodaEssaPorra = true
endif
End sub



Página 1 de 3 [29 registro(s)]
Tópico encerrado , respostas não são mais permitidas