CAIXA DE DIALOGO
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:
Obrigada colegas!
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!
vc usa a variavel de erro em outro lugar?
tenta assim:
coloca o cancelerror antes de abrir a commom
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
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.
ou seja, nas linhas acima eu estou forçando o erro.
Achei a solução de outro jeito, pois está é uma falha do Objeto:
Vide abaixo:
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
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..
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