CancelError v. Commondialog nur 1x möglich?

31/08/2007 - 09:11 von Ahmed Martens | Report spam
Hallo NG,

ich verwende den Commondialog und möchte die Abbrechen-Taste überprüfen
(CancelError=true). Das funktioniert aber nur einmal richtig. Ich möchte
nàmlich noch eine Sicherheitsabfrage stellen und wieder auf den
Ausgangspunkt zurück verzweigen und zwar solange, bis er mit 'Ja'
antwortet. Aber es wird die On Error GoTo -Anweisung nach dem ersten mal
nicht mehr ausgeführt.

Ist das so richig?

Danke schon einmal im voraus.

Hier mein Code:

Private Sub Form_Load()
Wiederholung:
On Error GoTo Form_Load_Error

If blnHelp = True Then Exit Sub
With CommonDialog1
.InitDir = strPath
.CancelError = True
.FileName = ""
.Filter = "*.pdf|*.pdf"
.DialogTitle = "FreePDF-Multidoc"
.ShowSave


strFile = CommonDialog1.FileName

If fncPrüf_Datei(strFile) = True Then
MsgBox "Die Datei ist schon vorhanden." &
vbNewLine & "Bitte geben Sie einen abweichenden Dateinamen ein!" &
vbNewLine & vbNewLine & "Um den Speichervorgang abzubrechen wàhlen Sie
bitte 'Abbrechen'.", vbCritical, "Doppelter Dateiname"
GoTo Wiederholung
End If
If strFile = "" Then
blnExit = True
Exit Sub
End If
End With

On Error GoTo 0
Unload Me
Exit Sub

Form_Load_Error:
Select Case Err.Number
Case 32755 'Abbrechen wurde gewàhlt
strFile = ""
Select Case MsgBox("Der Speichervorgang wurde gestoppt." _
& vbCrLf & "Es werden alle
PS-Druckdateien gelöscht." _
& vbCrLf & "" _
& vbCrLf & "Möchten Sie fortfahren?" _
, vbYesNo Or vbExclamation Or
vbDefaultButton1, "Speichervorgang stoppen")

Case vbYes
blnExit = True
Unload Me
Err.Clear

Case vbNo
Err.Clear
GoTo Wiederholung

End Select

Case Else
MsgBox "Fehlernr. " & Err.Number & " (" & Err.Description & ") in
Modul Tipp_Speichern of Modul Funktionen", , "Fehler in Zeile:" & Erl()
End Select

End Sub


Gruß Ahmed
Antworten bitte nur in der Newsgroup.
 

Lesen sie die antworten

#1 Thorsten Doerfler
31/08/2007 - 10:03 | Warnen spam
Ahmed Martens schrieb:
Hallo NG,

ich verwende den Commondialog und möchte die Abbrechen-Taste überprüfen
(CancelError=true). Das funktioniert aber nur einmal richtig. Ich möchte
nàmlich noch eine Sicherheitsabfrage stellen und wieder auf den
Ausgangspunkt zurück verzweigen und zwar solange, bis er mit 'Ja'
antwortet. Aber es wird die On Error GoTo -Anweisung nach dem ersten mal
nicht mehr ausgeführt.



Wenn Du mittels GoTo wieder an den Anfang der Prozedur springst,
befindest Du Dich für VB immer noch in der Fehlerbehandlung und daher
sieht es keine Veranlassung nochmals zur Fehlerbehandlung zu springen.
Du löst dann einen Fehler im Fehler aus und das funktioniert nicht.
Verwendet statt 'GoTo' 'Resume Wiederholung'. Damit verlàsst Du die
Fehlerbehandlung und sie wird bei erneutem Auftreten des Fehlers auch
erneut ausgeführt.

Thorsten Dörfler

Ähnliche fragen