Oktober 31, 2020, 23:59:10

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Fehlerbehandlung Hilfe

Begonnen von silentwolf, März 12, 2019, 08:11:47

⏪ vorheriges - nächstes ⏩

silentwolf

Hallo,
Ich habe hier einen Code von Herrn Lorenz Hölscher ,) der auch sehr gut funktioniert.

Nur würde ich zusätzlich gerne eine bessere Fehlerbehandlung einbauen.
Wenn das Blatt Existiert soll der Code kein neues Worksheet einfügen und wksQuelle wieder schliessen.
    Dim wbkQuelle As Workbook
    Dim wksQuelle As Worksheet
    Dim varPfadDatei As Variant
    Dim wksZiel As Worksheet
   
    varPfadDatei = Application.GetOpenFilename("Alle Daten,*.xl*,Text Dateien, *.txt*", 1, "Daten auswählen", , False)
       
    If varPfadDatei = False Then
        Exit Sub
    End If
   
    Set wbkQuelle = Workbooks.Open(varPfadDatei)
    Set wksQuelle = wbkQuelle.Worksheets(1)
   
    Set wksZiel = ThisWorkbook.Worksheets.Add()     'Dieses Blatt wäre aber ganz leer
   
'    ThisWorkbook.Worksheets("Leer").Copy , ThisWorkbook.Worksheets("Leer")          'kann verwendet werden wenn eine Vorlage verwendet werden möchte
   
    Set wksZiel = ActiveSheet
   
    wksZiel.Name = Replace(NurDatei(varPfadDatei), ".xlsx", "")
   
    If ExistiertBlatt(wksZiel.Name) Then
        MsgBox "Blatt wurde bereits importiert!", vbCritical, p_cstrAppTitel
        wbkQuelle.Close xlDoNotSaveChanges
        Exit Sub
    Else
        wksQuelle.UsedRange.Copy wksZiel.Cells(1, 1)
    End If
   
    wbkQuelle.Close xlDoNotSaveChanges
   
    Set wbkQuelle = Nothing
    Set wksZiel = Nothing
End Sub


Public Function ExistiertBlatt(strBlattName As String) As Boolean
    Dim objBlatt As Object
   
    ExistiertBlatt = False
    For Each objBlatt In ThisWorkbook.Sheets
        If objBlatt.Name = strBlattName Then
            ExistiertBlatt = True
            Exit For
        End If
    Next objBlatt
End Function


Function NurDatei(ByVal strPfadDatei As String) As String
    Dim intPos As Integer
   
    intPos = InStrRev(strPfadDatei, "\")
    If intPos = 0 Then                  'dann war keine Datei darin enthalten
        NurDatei = ""
    Else
        NurDatei = Mid(strPfadDatei, intPos + 1)
    End If
End Function


und die functions...

Also wie würde hier eine Fehlerbehandlung aussehen müssen das worksheet.add nicht ausgeführt wird wenn die Datei bereist vorhanden ist und die wksQuelle auch wieder ordnungsgemäß geschlossen wird.

Danke für Eure Hilfe!


ebs17

Zitat... wenn die Datei bereist vorhanden ist ...

Einen solchen erwarteten Zustand kann man doch prüfen, um dann bedingt von der Prüfung weiterzumachen (Abbrechen, Ersatzwert verwenden, Umgehen).
Eine Fehlerbehandlung sollte überwiegend auf unerwartete und/oder nicht konkret prüfbare Fehlerzustände reagieren. Wenn die Tür zu niedrig ist, würde man doch eher den Kopf einziehen statt sich nachfolgend Schmerztabletten einzuwerfen, u.a. auch, weil es einfach weitergehen kann.
Mit freundlichem Glück Auf!

Eberhard

silentwolf

Hallo Eberhard,
eigentlich ist es ja nicht die Datei hab mich verschrieben sondern das worksheet.
Ja verstehe schon was Du sagst nur irgendwie geht das noch nicht ganz nach Wunsch.
Werde weiter probieren )

Gruß
Albert

ebs17

Zitateigentlich ist es ja nicht die Datei hab mich verschrieben ...

Ja, Deine Beschreibung war mir aus sich alleine heraus nicht logisch auflösbar, und das Hinzufügen von eigenen Interpretationen  ist dann so eine Sache.

Empfehlung - Uraltlehre:
Ehe Du Codes hin- und herwirfst, schreibe einen Ablaufplan, also eine Übersicht, was wann warum erfolgen soll. Mit höherem Abstraktionsvermögen gelingt da einiges rein im Kopf, ansonsten nimmt man ein Blatt Papier und macht sich ein Bild mit Linien, Kästchen, Prüfungen usw.
Der Code muss dann nur umsetzen, was man geplant hat.
Mit freundlichem Glück Auf!

Eberhard

silentwolf

Hallo,
ZitatEhe Du Codes hin- und herwirfst, schreibe einen Ablaufplan, also eine Übersicht, was wann warum erfolgen soll. Mit höherem Abstraktionsvermögen gelingt da einiges rein im Kopf, ansonsten nimmt man ein Blatt Papier und macht sich ein Bild mit Linien, Kästchen, Prüfungen usw.

Tut mir sehr leid .. dachte wäre ein wenig verständlicher mit Code.
Danke aber für den Hinweis und werde mich bemühen es in Zukunft besser zu machen.



Sebi

Ist das Problem gelöst oder sind noch Faregn offen?
Liebe Grüße Sebi

silentwolf

Hallo Selbi,

ja Danke ich hab es lösen können.
Hat zwar ein wenig gedauert aber immerhin.

Vielen Dank für die Nachfrage!

Gruß
Albert