IDENTIFICAR QUE HOUVE ERROS

FPERIN 17/07/2012 02:08:39
#406222
olá. Tenho uma sub que contem os comandos que identificam erros, por exemplo,
[txt-color=#0000f0]Sub CarregarArquivoXLS()
On Error GoTo Erros

(...programa)

Exit Sub
Erros:
MsgBox [Ô]O arquivo [Ô][Ô][Ô] & arqbase & [Ô][Ô][Ô] não foi encontrado. Verifique o período solicitado![Ô]
End Sub[/txt-color]

Gostaria de saber como identifico que houve erro nesta sub quando estou chamando esta de dentro de outra sub? Assim:
[txt-color=#0000f0]Sub Teste()
Call CarregarArquivoXLS
If (deu erro na sub anterior) then
(...)
else
(...)
End If
End Sub[/txt-color]
MARCELO.TREZE 17/07/2012 08:25:29
#406224
você pode declarar uma variavel do tipo bolean no general do form e usa-la assim

no general do form

Dim ErroNaSub As Boolean

depois na primeira sub

Sub CarregarArquivoXLS()
On Error GoTo Erros

(...programa)

Exit Sub
Erros:
MsgBox [Ô]O arquivo [Ô][Ô][Ô] & arqbase & [Ô][Ô][Ô] não foi encontrado. Verifique o período solicitado![Ô]
ErroNaSub = True
End Sub


depois

Sub Teste()

If ErroNaSub = True then
MsgBox [Ô]Houve erro na sub anterior[Ô]
else
Call CarregarArquivoXLS
End If
End Sub

veja se assim vc consegue o que deseja


FFCOUTO 17/07/2012 09:36:04
#406232
Isso aí é gambiarra. Desculpe.

Na minha opinião o correto seria transformar essa Sub em Function e de acordo com o resultado você realiza outro comando.


Function CarregarArquivoXLS() As Boolean
On Error GoTo Erros

(...programa)

CarregarArquivoXLS = True [ô]O arquivo foi carregado sem erros
Exit Sub
Erros:
MsgBox [Ô]O arquivo [Ô][Ô][Ô] & arqbase & [Ô][Ô][Ô] não foi encontrado. Verifique o período solicitado![Ô]
CarregarArquivoXLS = False [ô]Erro ao carregar o arquivo
End Sub

Sub Teste()
Dim bErro As Boolean

[ô]Executa a function e guarda o resultado
bErro = CarregarArquivoXLS

If bErro then [ô]deu erro na sub anterior
(...)
Else
(...)
End If
End Sub


Espero ter ajudado.
MARCELO.TREZE 17/07/2012 11:14:53
#406234
Ué quem disse que não era gambiarra, e você só mudou a gambiarra de nome, pois não sendo algo nativo do VB só pode ser gambiarra mesmo, e faz parte da programação (vulgo POG).
Tópico encerrado , respostas não são mais permitidas