CAIXA DE DIALOGO

USUARIO.EXCLUIDOS 06/06/2007 08:34:28
#219947
Estou com dificuldade em adequar essa rotina há minha aplicação.
Bom, a princípio eu criei um variável booleana para indicar quando o usuário cancelasse a operação na Caixa de Diálogo, porém percebi que na primeira vez que eu cancelo a rotina Tratar erro identifica a variável e trata esse erro, porém se eu cancelo pela segunda vez, a rotina passa pela linha de código ".CancelError = True" e vai direto para o Tratar erro, com o valor da variável bErro=false, então impossibilita que eu chame a função a seguir.

Segue abaixo:

Private Sub CmdArmazena_Click()
On Local Error GoTo TrataErro
Dim bErro As Boolean

bErro = False

With Me.CDialogo
.Filter = "Planilha Excel (*.xls)|*.xls"
.ShowOpen
.CancelError = True
LS_PATHPLAN = .FileName
bErro = True
End With

Exit Sub
TrataErro:
If bErro Then
MsgBox "Ocorreu um erro!" & Chr(13) & Err.Number & ": " & Err.Description, vbCritical + vbOKOnly, "Erro"
Exit Sub
End If
Me.Hide
FrmLer.Fu_LerReport
End Sub



Obrigada colegas!
HUGOSSOUZA 06/06/2007 09:11:04
#219958
vc usa a variavel de erro em outro lugar?
tenta assim:
coloca o cancelerror antes de abrir a commom
Private Sub CmdArmazena_Click()

On Local Error GoTo TrataErro
Me.CDialogo.cancelerror = true

With Me.CDialogo
.Filter = "Planilha Excel (*.xls)|*.xls"
.ShowOpen
LS_PATHPLAN = .FileName
End With

Exit Sub
TrataErro:
If Err.Number = 32755 Then
msgbox "clicou em cancelar"
else
MsgBox "Ocorreu um erro!" & Chr(13) & Err.Number & ": " & Err.Description, vbCritical + vbOKOnly, "Erro"
end if

'não entendi essa parte aqui de baixo..
'se não der erro abre algum form?
'mas se ele vier aqui pra baixo é pq deu algum erro certo?

Exit Sub
Me.Hide
FrmLer.Fu_LerReport
End Sub

USUARIO.EXCLUIDOS 06/06/2007 09:55:04
#219968
Mas se não der erro quer dizer que ele não vai entrar no if..
ou seja, nas linhas acima eu estou forçando o erro.
USUARIO.EXCLUIDOS 06/06/2007 10:06:16
#219972
Achei a solução de outro jeito, pois está é uma falha do Objeto:

Vide abaixo:

Private Sub CmdArmazena_Click()
On Local Error GoTo TrataErro
Dim bErro As Boolean

bErro = False

With Me.CDialogo
.Filter = "Planilha Excel (*.xls)|*.xls"
.ShowOpen
.CancelError = True
LS_PATHPLAN = .FileName
bErro = True
End With

If LS_PATHPLAN <> "" Then
Me.Hide
FrmLer.Fu_LerReport
End If

Exit Sub
TrataErro:
If bErro Then
MsgBox "Ocorreu um erro!" & Chr(13) & Err.Number & ": " & Err.Description, vbCritical + vbOKOnly, "Erro"
Exit Sub
End If
End Sub



HUGOSSOUZA 06/06/2007 10:22:19
#219981
era isso q eu estava achando estranho...

vc nem precisa da variavel boolean..
se vc deixar do jeito q eu passei e colocar o me.hide e chamar a função antes do erro funciona tbm..
Tópico encerrado , respostas não são mais permitidas