Importabbruch abfangen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Importabbruch abfangen
von: Mark
Geschrieben am: 20.04.2005 17:50:05
Hi
Ich starte über ein Makro die Aktualisierung von externen Daten in meiner Datei. Dann kommt ein Fenster, was auch in Ordnung ist, wo abgefragt wird, wo die Datei liegt, die importiert bzw aktualisiert wird. Wenn ich da allerdings die Datei nicht auswähle sondern auf abbrechen klicke, schmeißt er mich in die Tabelle, die der Benutzer eigentlich nie sehen soll und gibt eine Fehlermeldung aus. Kann ich das irgendwie abfangen?
ciao & thx
Mark

Bild

Betrifft: AW: Importabbruch abfangen
von: ransi
Geschrieben am: 20.04.2005 18:05:32
hallo mark
verrsuchs mal so:
weil ohne deinen code ist das wie im kaffesatzlesen.

Sub was_weiss_ich()
dim xy
dim yz
on error goto fehler
code
.
.
.
exit sub
fehler:
msgbox "Abbrechen geclickt"
End Sub

ransi
Bild

Betrifft: Kaffeesatz... :D
von: Mark
Geschrieben am: 20.04.2005 18:34:43
Hi
evtl, habe ich es nur falsch zusammen kopiert, aber es funktioniert noch net
Hier der Code:

Sub importData()
    
    Dim Msg As String
    Msg = "ACHTUNG!!! Alle Inhalte der 'Ausgabetabelle' gehen verloren" & vbCr & "" & vbCr & "Soll der Vorgang fortgesetzt werden?"
    Select Case MsgBox(Msg, vbCritical Or vbOKCancel, "Microsoft Excel")
    Case vbOK
        ' OK
        Application.Run "Kontoumsätze.xls!Unprotect"
        Sheets("Import").Select
        'Aktualisierung der Daten
        Range("A3").Select
        Selection.QueryTable.Refresh BackgroundQuery:=False
        'Angleich der Spaltenbreite an den Inhalt
        Cells.Select
        Cells.EntireColumn.AutoFit
              
        'Formelprobleme für gefilterten Kontonamen und gefilterten Verwendungszweck 1 lösen
        Sheets("Import").Select
        Range("AI3").Select
        ActiveCell.FormulaR1C1 = _
            "=IF(RC[-8]=""Park Mor nasee GmbH & Co.KG"",""Park Moränasee GmbH & Co.KG"",IF(RC[-8]<>"""",RC[-8],IF(RC[-32]="""","""",IF(RC[-24]<>"""",""---"",IF(RC[-9]="""",RC[-26],""---"")))))"
        Range("AJ3").Select
        ActiveCell.FormulaR1C1 = _
            "=IF(RC[-33]="""","""",IF(RC[-25]="""",""---"",RC[-25]))"
        Range("AI3:AJ3").Select
        Selection.AutoFill Destination:=Range("AI3:AJ300"), Type:=xlFillDefault
        Range("AI3:AJ300").Select
        Range("A1").Select
    
        Application.Run "Kontoumsätze.xls!updateOutput"
        Application.Run "Kontoumsätze.xls!Unprotect"
        'Autofilter 3 auf Nichtleer setzen
        Sheets("Ausgabe").Select
        Selection.AutoFilter Field:=3, Criteria1:="<>"
        Range("A1").Select
    
        'Schutz einschalten
        Application.Run "Kontoumsätze.xls!Protect"
    
        Application.ScreenUpdating = True
    Case vbCancel
        ' Abbrechen
        Application.Run "Kontoumsätze.xls!Protect"
    End Select
    
End Sub


ciao, danke dir!
Mark
Bild

Betrifft: AW: versuch
von: ransi
Geschrieben am: 20.04.2005 19:14:22


      
hallo mark
allerdings ungetestet weil ich nicht über die diversen makros und dateien verfüge.
Sub importData()
    
Dim Msg As String
    
On Error GoTo fehler:
    Msg = 
"ACHTUNG!!! Alle Inhalte der 'Ausgabetabelle' gehen verloren" & vbCr & "" & vbCr & "Soll der Vorgang fortgesetzt werden?"
    
Select Case MsgBox(Msg, vbCritical Or vbOKCancel, "Microsoft Excel")
    
Case vbOK
        
' OK
        Application.Run "Kontoumsätze.xls!Unprotect"
        Sheets(
"Import").Select
        
'Aktualisierung der Daten
        Range("A3").Select
        Selection.QueryTable.Refresh BackgroundQuery:=
False
        
'Angleich der Spaltenbreite an den Inhalt
        Cells.Select
        Cells.EntireColumn.AutoFit
        
'Formelprobleme für gefilterten Kontonamen und gefilterten Verwendungszweck 1 lösen
        Sheets("Import").Select
        Range(
"AI3").Select
        ActiveCell.FormulaR1C1 = _
            
"=IF(RC[-8]=""Park Mor nasee GmbH & Co.KG"",""Park Moränasee GmbH & Co.KG"",IF(RC[-8]<>"""",RC[-8],IF(RC[-32]="""","""",IF(RC[-24]<>"""",""---"",IF(RC[-9]="""",RC[-26],""---"")))))"
        Range(
"AJ3").Select
        ActiveCell.FormulaR1C1 = _
            
"=IF(RC[-33]="""","""",IF(RC[-25]="""",""---"",RC[-25]))"
        Range(
"AI3:AJ3").Select
        Selection.AutoFill Destination:=Range(
"AI3:AJ300"), Type:=xlFillDefault
        Range(
"AI3:AJ300").Select
        Range(
"A1").Select
        Application.Run 
"Kontoumsätze.xls!updateOutput"
        Application.Run 
"Kontoumsätze.xls!Unprotect"
        
'Autofilter 3 auf Nichtleer setzen
        Sheets("Ausgabe").Select
        Selection.AutoFilter Field:=3, Criteria1:=
"<>"
        Range(
"A1").Select
        
'Schutz einschalten
        Application.Run "Kontoumsätze.xls!Protect"
        Application.ScreenUpdating = 
True
    
Case vbCancel
        
' Abbrechen
        Application.Run "Kontoumsätze.xls!Protect"
    
End Select
Exit Sub
fehler:
MsgBox 
"Abbrechen geclickt"
End Sub
...und versuch mal ohne die 
select auszukommen.
geht bestimmt auch ohne.
ransi 


Bild

Betrifft: AW: versuch
von: Mark
Geschrieben am: 20.04.2005 23:09:41
Servus
- ...und versuch mal ohne die select auszukommen.
- geht bestimmt auch ohne.
- ransi
Meinst du die Case Abfrage? Warum?!?!
Würde mich als Leien mal interessieren.
ciao Mark
Bild

Betrifft: AW: versuch
von: andre
Geschrieben am: 21.04.2005 05:52:17
Range("AJ3").Select
ActiveCell.FormulaR1C1 = _
geht auch so
Range("AJ3").FormulaR1C1 = _
das ist quatsch, so nach dem Motto baue Dein Haus vom Keller bis zum Dach, und dann baue den Keller nochmal ;-)
Range("AI3:AJ300").Select
Range("A1").Select
das ist auch doppelt gemoppelt:
Cells.Select
Cells.EntireColumn.AutoFit
und das hier
Range("A3").Select
Selection.QueryTable.Refresh BackgroundQuery:=False

könnte auch so gehen
Range("A3").QueryTable.Refresh BackgroundQuery:=False

und wenn nicht, es gibt einzelne Fälle, wo Befehle nur mit Selection gehen, aber da gibt es zum Teil auch Lösungswege mit Objekten ...
Grüße, ANdre
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Importabbruch abfangen"