Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender Navigationstipps
Inhaltsverzeichnis

On Error Goto bleibt hängen

On Error Goto bleibt hängen
Jemp
Hallo Freunde
Ich habe eine Datei aus der ich jeden Montat verschiedene Zellen in eine separate Datei kopieren möchte und diese Datei wird dann gespeichert.
Weil mehrer Dateien auf diese Zieldatei zurückgreifen und die Datei ggfs schon erstellt oder offen ist muss das überprüft werden.
Vorgehensweise ist folgende:
1 überprüfen op die Datei schon offen ist
2 wenn nicht offen dann überprüfen op es die Daeti überhaupt gibt, wenn ja sie öffnen
3 wenn es die Datei nicht gibt, eine neue Datei erstellen
hier einen Teil der Makro,
wenn es die Datei noch nicht gibt, bekomme ich eine Fehlermeldung und die Makro geht trotz "error goto "nicht zu Line:2, habe ich hier was vergessen?
Vielen Dank für eure Hilfe
.....
base = "Datei.xls"
pfad = "V:\Ordner\unterordner\2010\"
name = ActiveSheet.Range("B63").Value
Dateiname = pfad & name & ".xlsx"
Datei = name & ".xlsx"
On Error GoTo Line1:
Workbooks(Datei).Activate
GoTo Line3:
Line1:
On Error GoTo Line2:
Workbooks.Open Filename:=Dateiname
GoTo Line3:
Line2:
Workbooks.Add
Sheets("Sheet1").name = "einkauf"
Sheets("Sheet2").name = "verkauf"
Sheets("Sheet3").name = "gesamt"
ActiveWorkbook.SaveAs Filename:=Dateiname
Line3:
' rest der Makro

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
ohne On Error
10.09.2010 10:03:54
Rudi
Hallo,
das ist ein ganz übler Stil. Denk mal über dein Level nach.
Und nie Schlüsselwörter (hier: Name) als Variablen benutzen!
Sub ttt()
Dim sBase As String, _
sPfad As String, _
sName As String, _
sDateiName As String, _
sDatei As String, _
wkb As Workbook, _
blnOpen As Boolean
sBase = "Datei.xls"
sPfad = "V:\Ordner\unterordner\2010\"
sName = ActiveSheet.Range("B63").Value
sDateiName = sPfad & sName & ".xlsx"
sDatei = sName & ".xlsx"
For Each wkb In Workbooks
If wkb.Name = sDatei Then
blnOpen = True
wkb.Activate
Exit For
End If
Next wkb
If Not blnOpen Then
If Dir(sDateiName)  "" Then
Workbooks.Open sDateiName
Else
Workbooks.Add
Sheets(1).Name = "einkauf"
Sheets(2).Name = "verkauf"
Sheets(3).Name = "gesamt"
ActiveWorkbook.SaveAs Filename:=sDateiName
End If
End If
'Rest Code
End Sub

Anzeige
AW: ohne On Error - DANKE
10.09.2010 10:12:51
Jemp
Level sollte eigentlich VBA bescheiden sein..., Sorry
Danke für die Hilfe, so sieht das ganze schon viel gepflegter aus
AW: On Error Goto bleibt hängen
10.09.2010 10:51:45
JogyB
Hallo Jemp,
zur Erklärung Deines Problems:
Wenn die Datei nicht offen ist, entsteht ein Fehler, der abgehandelt wird. Solange diese Fehlerbahndlung läuft - und das tut sie, bis ein Resume, Exit oder End kommt - kann kein weiterer Fehler abgehandelt werden. Das kann man natürlich umgehen, indem man bei On Error GoTo eine Sprungmarke angibt und von der aus dann mit Resume zur eigentlichen Sprungmarke im Code sprint. Sieht aber nicht besonders toll aus und ist auch beim Lesen des Codes etwas verwirrend.
Eine Alternative zu Rudis Code wäre noch:
    On Error Resume Next
Workbooks(Datei).Activate
If Err.Number  0 Then
Err.Clear
Workbooks.Open Filename:=Dateiname
If Err.Number  0 Then
Workbooks.Add
End If
End If
On Error GoTo 0

Gruß, Jogy
Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige