VBA - INTERROMPER TOTALMENTE O CODIGO
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
é 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
Vc pode colocar o End em vez de Exit Sub.
Tente assim:
Qualquer dúvida informe.
Sds.
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.
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.
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.
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
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
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
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
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
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?
é 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?
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
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
Cria uma variável do form pra controlar isso.
Quando vc quiser parar, seta ela.
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
Tópico encerrado , respostas não são mais permitidas