Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1152to1156
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
Inhaltsverzeichnis

Problem mit Resume next

Problem mit Resume next
Hockmock
Hallo an alle Xperten,
Per Makro und definierten Queries importiere ich eine ganze Reihe von Daten. Das funktioniert soweit auch problemlos (siehe nachstehenden Code).
Problem ist jetzt nur mein resume - next. Konkret: Bei einem Fehler (zugrunde liegende Query-Datei ist schreibgeschützt bereits geöffnet) wechselt der Code von der for-Anweisung zur Sprungmarke. Danach erzwingt er aber keinen next-Befehl sondern wechselt wieder in die for-Anweisung ?
Danke im voraus.
Grüße,
Hockmock
Sub AktDieZweite()
'Namen der Tabellenblätter werden im Blatt "Checksummen - Splate AU ausgegeben
Dim i As Long
Application.DisplayAlerts = False
Sheets("History").Select
Range("e1").Select
On Error GoTo 1
For i = Sheets("Anfang").Index + 1 To Sheets("Ende").Index - 1
Sheets(i).Select
Range("A1").Select
Selection.QueryTable.Refresh BackgroundQuery:=False
Sheets("History").Select
ActiveCell = "o.k."
ActiveCell.Offset(0, 1).Range("A1").Select
Next i
Application.DisplayAlerts = True
1:
Sheets("History").Select
ActiveCell = "xxx"
Resume Next
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Problem mit Resume next
29.04.2010 07:44:54
Dirk
Hallo!
Warscheinlich bewirkt Dein Resume Next, das die naechste Zeile nach dem Error angesprungen wird.
Vermutlich moechtest Du aber die naechste Datei bearbeiten.
Dazu solltest Du eine weitere Springmarke setzen, zB. next_i direkt vor 'Next i' und dorthin springen mit goto next_i anstelle von Resume Next.
Gruss
Dirk aus Dubai
Kleine Ergänzung ...
29.04.2010 08:04:56
xr8k2
Hallo zusammen,
kleiner Hinweis am Rande, das mit der 2. Sprungmarke ist korrekt, anstelle des
goto next_i
sollte man aber besser die zweite Sprungmarke mit
resume next_i
anspringen, da der VBA-Code sonst denkt er wäre auch nach dem zurückspringen immer noch in der Fehlerbehandlungsroutine und beim nächsten auftretende Fehler stoppt der Code unbehandelt.
Gruß,
xr8k2
Anzeige
AW: Kleine Ergänzung ...
29.04.2010 08:24:25
Hockmock
Hallo xr8k2,
vielen dank für deine Hilfe. Ich habe mittlerweile meinen Code wie nachstehend abgeändert (Danke Rudi!!!). Damit bin ich alle meine Sorgen los - vorerst zumindest :-)
Grüße,
Hockmock
Sub AktDieDritte()
'Namen der Tabellenblätter werden im Blatt "Checksummen - Splate AU ausgegeben
Dim i As Long, Zelle As Range
Application.DisplayAlerts = False
Sheets("History").Select
Set Zelle = Sheets("History").Range("e1") 'Startzelle für "o.k."/"xxx"
On Error GoTo Fehler
For i = Sheets("Anfang").Index + 1 To Sheets("Ende").Index - 1
Sheets(i).Select
Range("A1").Select
Selection.QueryTable.Refresh BackgroundQuery:=False
Zelle = "o.k."
Set Zelle = Zelle.Offset(0, 1)
NextQuerry:
Next i
Application.DisplayAlerts = True
Err.Clear
Fehler:
With Err
Select Case .Number
Case 0 'alles ok
Case 1004 'hier die Nummer des Fehler einsetzen
Zelle = "xxx"
Set Zelle = Zelle.Offset(0, 1)
Resume NextQuerry
Case Else
MsgBox "Fehler-Nr: " & .Number & vbLf & .Description
End Select
End With
Sheets("History").Select
End Sub

Anzeige
ich würde dies so machen und den Teil ...
29.04.2010 08:18:45
Tino
Hallo,
in einer Funktion auslagern und dort die Error- Behandlung durchführen.
Nicht getestet.
Sub AktDieZweite()
'Namen der Tabellenblätter werden im Blatt "Checksummen - Splate AU ausgegeben 
Dim iTabIndex As Integer, LngRow&, booIsError As Boolean

Application.DisplayAlerts = False


For iTabIndex = Sheets("Anfang").Index + 1 To Sheets("Ende").Index - 1

 If Not Datei_Aktualisieren(iTabIndex) Then
    Sheets("History").Range("e1").Offset(0, LngRow&) = "o.k."
 Else
    Sheets("History").Range("e1").Offset(0, LngRow&) = "xxx"
 End If
 
 LngRow& = LngRow& + 1

Next iTabIndex

Application.DisplayAlerts = True


End Sub

Function Datei_Aktualisieren(ByVal iTabIndex As Integer) As Boolean
On Error GoTo Errorh:

Sheets(iTabIndex).Range("A1").QueryTable.Refresh BackgroundQuery:=False

Exit Function

Errorh:
Datei_Aktualisieren = True
End Function
Gruß Tino
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige