Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
544to548
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
544to548
544to548
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Error handling

Error handling
13.01.2005 17:55:23
Harald
Hallo ihr Profis,
ich bräuchte wieder eure Hilfe!
Ich habe ein Problem mit dem error handling: ich habe eine for-next schleife, in der eine anweisung steht die (gewollter Weise) in einen Fehler läuft, da sie in einen geschützten Bereich schreiben will. Vor dieser Anweisung steht daher "on error goto weiter"
Beim Durchlauf der Schleife wird der erste auftretende Fehler korrekt abgearbeitet (also springt er auf weiter:), wenn der Fehler das zweite Mal auftritt stoppt das Makro und meldet den Fehler, dass geschützte Bereiche nicht verändert werden können.
Was mache ich falsch?
Danke für eure Hilfe im voraus
Harald

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
poste mal den Code o.w.T.
13.01.2005 17:59:14
Reinhard
AW: poste mal den Code o.w.T.
13.01.2005 18:05:29
Harald
Bitte nicht lachen, ich bastle mir das so zusammen... ;-)

Sub Upgradesales()
Dim store As String
Dim pfad As String
Dim pfad2 As String
Dim datei As String
Dim dateiname As String
Dim soll As String
Dim sollname As String
Dim arg1 As Range
Dim storebud As Double
pfad = "c:\test\"
sollname = "soll.xls"
soll = pfad + sollname
For i = 1 To 167
On Error GoTo 0
Select Case i
Case 1, 4, 7, 9, 10, 11, 15, 19, 23, 26, 29, 33, 41, 45, 47, 55, 59, 62, 75, 83, 107, 109, 123, 124, 126, 146, 152, 161, 162, 163, 166
GoTo weiter
Case Else
j = Str(i)
länge = Len(j)
länge = länge - 1
k = Right(j, länge)
store = Right("00" + k, 3)
datei = pfad + store + ".xls"
dateiname = store + ".xls"
storebud = store
Application.DisplayAlerts = False
Workbooks.Open datei
Application.DisplayAlerts = True
Sheets("Proj0").Visible = True
Sheets("Proj0").Select
If Val(Range("A16")) <> 2005 Then GoTo fehler
GoTo ok:
fehler:
If MsgBox("Achtung! Falsches Jahr!", vbCritical, (Range("A16") + store)) = vbOK Then GoTo ende:
ok:
Range("a16:n19").Select
Selection.Copy
Windows("upgrade_sales_proj0_auto.xls").Activate
Sheets("Sheet1").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.DisplayAlerts = False
Workbooks.Open soll, 0, 1
Application.DisplayAlerts = True
Set arg1 = Workbooks(sollname).Sheets("Sheet1").Range("a1:b162")
Windows("upgrade_sales_proj0_auto.xls").Activate
Sheets("Sheet1").Select
Range("N8").Value = WorksheetFunction.VLookup(store, arg1, 2, False)
Range("b20:m21").Select
Selection.Copy
Windows(dateiname).Activate
Sheets("Proj0").Select
Range("b17").Select
On Error GoTo sales
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
GoTo fertig
sales:
Windows("upgrade_sales_proj0_auto.xls").Activate
Sheets("Sheet1").Select
Range("b21:m22").Select
Selection.Copy
Windows(dateiname).Activate
Sheets("Proj0").Select
Range("b18").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
On Error GoTo 0
fertig:
Windows(dateiname).Close 1
weiter:
End Select
Next i
ende:
Application.DisplayAlerts = False
Windows(sollname).Close 0
Application.DisplayAlerts = True
Windows("upgrade_sales_proj0_auto.xls").Activate
Range("a1").Select
End Sub

Anzeige
AW: poste mal den Code o.w.T.
13.01.2005 19:17:08
Ramses
Hallo
da steht nirgends
On Error goto Weiter
Nur in der Select - Anweisung steht
Goto Weiter
Das hat aber nichts mit "On Error" zu tun
Gruss Rainer
AW: poste mal den Code o.w.T.
13.01.2005 19:52:40
Harald
Sorry, "weiter" stand in meiner allgemeinen Erklärung stellvertretend für "sales". im code steht also "on error goto sales".
AW: poste mal den Code o.w.T.
13.01.2005 20:13:26
Ramses
Hallo
ohne Datei wird das schwierg nachvollziehbar.
Setze bei "On Error Goto Sales" einen Haltepunkt (Zeile wählen und F9) und gehe dann mit F8 Schritt für Schritt durch die nächsten Codezeilen bis der Fehler auftritt.
So kannst du Variablen und sonstige Aktionen besser prüfen.
Gruss Rainer
Anzeige
AW: poste mal den Code o.w.T.
13.01.2005 20:23:32
Harald
Das habe ich bereits probiert, habe sogar Überwachung eingeschalten und den errorwert angezeigt, bei der ersten Datei die er öffnet und in die gesperrten zellen schreiben will wird der error wert entsprechend gefüllt und der code springt auf sales: bei der nächsten Datei die er öffnet und wieder in gesperrte zellen schreibt popt die Fehlermeldung auf...
AW: poste mal den Code o.w.T.
13.01.2005 20:23:15
Reinhard
Hi Harald,
habe mal den Code verändert, (ungetestet).
Gruß
Reinhard

Sub Upgradesales()
Dim store As String, pfad As String, pfad2 As String, datei As String, dateiname As String
Dim soll As String, sollname As String, arg1 As Range, storebud As Double
pfad = "c:\test\"
sollname = "soll.xls"
soll = pfad + sollname
For i = 1 To 167
On Error GoTo 0
If pruef(i) = False Then
k = Right(Str(i), Len(Str(i) - 1))
store = Right("00" + k, 3)
datei = pfad + store + ".xls"
dateiname = store + ".xls"
storebud = store
Application.DisplayAlerts = False
Workbooks.Open datei
Application.DisplayAlerts = True
Sheets("Proj0").Visible = True
Sheets("Proj0").Select
If Val(Range("A16")) <> 2005 And _
MsgBox("Achtung! Falsches Jahr!", vbCritical, (Range("A16") + store)) = vbOK Then Exit For
Range("a16:n19").Copy
Windows("upgrade_sales_proj0_auto.xls").Activate
Sheets("Sheet1").Range("A1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.DisplayAlerts = False
Workbooks.Open soll, 0, 1
Application.DisplayAlerts = True
Set arg1 = Workbooks(sollname).Sheets("Sheet1").Range("a1:b162")
Windows("upgrade_sales_proj0_auto.xls").Activate
Sheets("Sheet1").Range("N8").Value = WorksheetFunction.VLookup(store, arg1, 2, False)
Range("b20:m21").Copy
Windows(dateiname).Activate
Sheets("Proj0").Range("b17").Select
On Error GoTo sales
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
GoTo fertig
sales:
Windows("upgrade_sales_proj0_auto.xls").Activate
Sheets("Sheet1").Range("b21:m22").Copy
Windows(dateiname).Activate
Sheets("Proj0").Range("b18").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
On Error GoTo 0
fertig:
Windows(dateiname).Close 1
End If
Next i
Application.DisplayAlerts = False
Windows(sollname).Close 0
Application.DisplayAlerts = True
Windows("upgrade_sales_proj0_auto.xls").Activate
Range("a1").Select
End Sub


Function pruef(n As Integer) As Boolean
pruef = False
Select Case n
Case 1, 4, 7, 9, 10, 11, 15, 19, 23, 26, 29, 33, 41, 45, 47, 55, 59, 62, 75, 83, 107, 109, 123, 124, 126, 146, 152, 161, 162, 163, 166
pruef = True
End Select
End Function

Anzeige
AW: poste mal den Code o.w.T.
13.01.2005 20:42:23
Harald
Hat leider das gleiche Ergebnis gebracht. (Dim i as integer hatte noch gefehlt in deinem Code und bei der Überprüfung der Jahreszahl 2005 gab es auch ein Problem mit deinem Code, aber das habe ich adaptiert, trotzdem kein Glück gehabt!) Ich lade jetzt einfach mal 5 Dateien hoch, die ins Verzeichnis c:\test\ gehören und ihr habt vielleicht die Zeit das zu testen. LG
Harald
https://www.herber.de/bbs/user/16054.xls ist das Sheet mit den Modulen 1 und 2 (1 ist mein Code, 2 ist dein Code)

Die Datei https://www.herber.de/bbs/user/16055.zip wurde aus Datenschutzgründen gelöscht

sind 3 Sheets (002.xls, 003.xls und 005.xls) die verändert werden sollen. Bei 003.xls klappt das errorhandling bei 005.xls nicht.

Die Datei https://www.herber.de/bbs/user/16056.xls wurde aus Datenschutzgründen gelöscht

ist "soll.xls", das die Daten für das Update der anderen 3 Sheets enthält.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige