SAIR DE UMA SUB
boa tarde amigos estou com um problema é o seguinte:
eu tenho um arquivo texto onde eu farro ele do inicio ao fim entao coloquei essa função em um modulo da seguinte forma:
Sub NotaFiscalEletronicaProdutosServiços()
Open strCaminho For Input As #intFF
Do While Not EOF(intFF)
Line Input #intFF, strAux
aqui vai a rotina onde pego os dados do arquivo text
Loop
Close #intFF
qual o meu problema:
na verdade eu faço um loop do inicio ao fim sendo que em determinados momentos eu preciso interromper esse processo e nao deixar mas que ele continue com isso.
eu ja coloque em um botao exit sub sendo que mesmo assim ele continua, sera que é pq ele esta em um modulo separado e nao no form principal?
preciso muito da ajuda de voces
um forte abraço
fiquem com deus
eu tenho um arquivo texto onde eu farro ele do inicio ao fim entao coloquei essa função em um modulo da seguinte forma:
Sub NotaFiscalEletronicaProdutosServiços()
Open strCaminho For Input As #intFF
Do While Not EOF(intFF)
Line Input #intFF, strAux
aqui vai a rotina onde pego os dados do arquivo text
Loop
Close #intFF
qual o meu problema:
na verdade eu faço um loop do inicio ao fim sendo que em determinados momentos eu preciso interromper esse processo e nao deixar mas que ele continue com isso.
eu ja coloque em um botao exit sub sendo que mesmo assim ele continua, sera que é pq ele esta em um modulo separado e nao no form principal?
preciso muito da ajuda de voces
um forte abraço
fiquem com deus
Vc precisa criar não uma sub, mas sim uma função com parametros.
Onde essa função encerra o processo dependendo de uma condição.
Onde essa função encerra o processo dependendo de uma condição.
GUIGOR,
Para forçar a saÃda de uma sub você pode usar: [Ô]Exit Sub[Ô].
Mas eu gostei mais da solução do NILSONTRES.
[][ô]s,
Tunusat.
Para forçar a saÃda de uma sub você pode usar: [Ô]Exit Sub[Ô].
Mas eu gostei mais da solução do NILSONTRES.
[][ô]s,
Tunusat.
Mas como eu faria isso ? Nao sei teria algum ex.
A sugestão do Nilsontres é boa,
Mas se desejar permanecer com a sua tente colocar um DO EVENTS na sua Sub em General Declarations.
Mas se desejar permanecer com a sua tente colocar um DO EVENTS na sua Sub em General Declarations.
Como disse o exit sub nao funciona Nilsontresvc poderia postar um ex de como fazer isso com uma funcao e alguem teria como me ajudar.
Depende de como vc esta utilizando, mas abaixo um exemplo para vc entender a logica.
Function Teste() As Boolean
if condição atendida then
Teste = True
End If
End Function
Private Sub BotaoTeste_Click()
if Teste=False then exit sub [ô]aqui para tudo, caso contrario segue o codigo
[ô]segue o codigo
end Sub
Function Teste() As Boolean
if condição atendida then
Teste = True
End If
End Function
Private Sub BotaoTeste_Click()
if Teste=False then exit sub [ô]aqui para tudo, caso contrario segue o codigo
[ô]segue o codigo
end Sub
O problema não está na sub e sim no loop uma vez no loop é meio dificil interrompe-lo, e a função correta para isso seria um EXIT DO
bom vamos a uma maneira, declare no módulo a seguinte variável:
No load do form que você chama a função coloque
no click de um botão coloque
mude seu laço para
bom vamos a uma maneira, declare no módulo a seguinte variável:
Global interromper As Boolean
No load do form que você chama a função coloque
Interromper = False
no click de um botão coloque
interromper = True
mude seu laço para
Open strCaminho For Input As #intFF
Do While Not EOF(intFF)
[txt-color=#007100][ô] abaixo segue como sair do laço[/txt-color]
DoEvents
If Interromper = True Then
Exit Do
End If
[ô]
Line Input #intFF, strAux
aqui vai a rotina onde pego os dados do arquivo text
Loop
Close #intFF
Perfeito MARCELO-TREZE,
Só que eu desconfio que nosso amigo não esta querendo parar só a sub propriamente dita, mas sim ela, e o que vem após a chamada dela.
Desconfio, não tenho certeza. Por isso que postei um exemplo de chamada de uma função e a parada após ela.
Abraço
Só que eu desconfio que nosso amigo não esta querendo parar só a sub propriamente dita, mas sim ela, e o que vem após a chamada dela.
Desconfio, não tenho certeza. Por isso que postei um exemplo de chamada de uma função e a parada após ela.
Abraço
Entendi sua explanação mas veja bem citação do colega:
como este laço está em uma sub erroneamente ele achou que sair da sub pararia o laço, e não após ele chamar a sub o laço se inicia, e não para mais, a não ser que seja interrompido.
Citação:na verdade eu faço um loop do inicio ao fim sendo que em determinados momentos eu preciso interromper esse processo e nao deixar mas que ele continue com isso.
como este laço está em uma sub erroneamente ele achou que sair da sub pararia o laço, e não após ele chamar a sub o laço se inicia, e não para mais, a não ser que seja interrompido.
marcelo muito obrigado era exatamente isso que eu precisava.
Tópico encerrado , respostas não são mais permitidas