Microsoft Excel

Herbers Excel/VBA-Archiv

Fehlerbehandlung

Betrifft: Fehlerbehandlung von: Carsten
Geschrieben am: 21.11.2014 09:49:57

Hallo liebe Gemeinde,

ich habe eine Frage bezüglich der Fehlerbehandlung.

Ich öffne eine Datei und schreibe dort Daten heraus. Jetzt habe ich das Problem, dass es Laschen gibt, welche erst im zeitablauf dazu kommen. Wie überspringe ich das kopieren von diesen Fehlern ohne direkt auf einen nächsten Tag zu springen.

Zur veranschaulichung findet ihr den Code unten:

For i = 4 To 329

Monat = ThisWorkbook.Worksheets("Official Prices").Cells(i, 3)
Jahr = ThisWorkbook.Worksheets("Official Prices").Cells(i, 4)
Tag = ThisWorkbook.Worksheets("Official Prices").Cells(i, 2)

Name = "Test " & Tag & ".xlsm"

Workbooks.Open (Pfad & "\" & Jahr & "\" & Monat & "\" & Name)

ThisWorkbook.Worksheets("Official Prices").Cells(i, 5) = Workbooks(Name).Worksheets("Name1").Range("B32")
ThisWorkbook.Worksheets("Official Prices").Cells(i, 6) = Workbooks(Name).Worksheets("Name2").Range("B32")
ThisWorkbook.Worksheets("Official Prices").Cells(i, 7) = Workbooks(Name).Worksheets("Name3").Range("B32")
ThisWorkbook.Worksheets("Official Prices").Cells(i, 8) = Workbooks(Name).Worksheets("Name4").Range("B32")

Workbooks(Name).Close

Next
i = i + 1

  

Betrifft: AW: Fehlerbehandlung von: Rudi Maintaire
Geschrieben am: 21.11.2014 10:03:09

Hallo,

If Dir (Pfad & "\" & Jahr & "\" & Monat & "\" & Name) <> "" then
  workbooks.open (....)
  ...

End If
Next
Gruß
Rudi


  

Betrifft: AW: Verständnisfrage von: Werner
Geschrieben am: 22.11.2014 16:40:01

Hallo Rudi,

ich lese hier im Forum mit um was zu lernen, deshalb eine Verständnisfrage zum Code von Carsten.

For  i = 4 to 329

....weiterer Code

Next
i = i + 1
Erster Durchlauf i=4, dann komm ich zu Next also i=5, dann i=i+1 also i=6
Bei jedem Durchlauf wird i also um zwei erhöht also 2, 4, 6, 8 usw. So komm ich aber nicht auf den Ausstiegswert von 329.

Sehe ich das so richtig? Nur für mich zum Lernen.

Gruß Werner


  

Betrifft: AW: Verständnisfrage von: Rudi Maintaire
Geschrieben am: 23.11.2014 21:26:53

Hallo,
Erster Durchlauf i=4, dann komm ich zu Next also i=5, dann i=i+1 also i=6
nein.
i=4,5,6....329
Bei i=330 wird die Schleife verlassen. i=i+1: I=331
Anders bei
i=i+1
Next i
Macht man aber nicht. Wenn dann

For i = 4 to 329 Step 2
'Code
Next i
So komm ich aber nicht auf den Ausstiegswert von 329.
das spielt keine Rolle. Die Schleife wird verlassen, sobald der Ausstiegswert überschritten ist.

Gruß
Rudi


  

Betrifft: AW: Verständnisfrage von: Werner
Geschrieben am: 24.11.2014 11:32:08

Hallo Rudi,

danke für die Antwort. Hast mir leider mal wieder gezeigt, dass die Frage blöd war! Das Konstrukt heißt ja For - Next Schleife, bewegt sich also zwischen For und Next bis der Ausstiegswert überschritten ist und trifft dann erst auf i=i+1.
Dieses i=i+1 hatte mich verwirrt, das macht da ja eigentlich keinen Sinn.
Bedeutet für mich in Zukunft besser hinschauen und Dornbirn Windungen noch etwas mehr zu strapazierten.

Danke Werner