Das geschieht sowohl am Mac mit MS-Excel 2010 für Mac als auch am PC mit Excel 2003.
Zuerst habe ich es versucht mit: ''ursprünglicher Ausdruck:If wb.ws1.Cells(n, "AT") 0 Then'' und dann (als das zum Fehler führte) damit, vorher die Startzelle als Range festzulegen. Beides endete im Fehler.
Ich habe lange experimentiert, jetzt sehe ich den Wald vor Bäumen nicht mehr.
Wer kann helfen? Hier der vorbereitete Code:
Option Explicit
Sub Archiviere()
Dim wb As Workbook 'Dimensionierung der Arbeitsmappe
Dim ws1 As Worksheet 'Dimensionierung des Arbeitsblattes 1 ("Auswertung")
Dim ws2 As Worksheet 'Dimensionierung des Arbeitsblattes 2 ("Schadwagenarchiv")
Dim iRow, jRow As Long 'Dimensionierung der Zeilenzähler
Dim n As Long 'Dimensionierung der Zeilenzahl für die Schleife
Dim rng As Range 'Dimensionierung eines Zellbereichs
Set wb = Workbooks("Auswertung Kopie2003.xls") 'Wert für die Arbeitsmappe setzen
Set ws1 = wb.Worksheets("Auswertung") 'Wert für das Arbeitsblatt "Auswertung" setzen
Set ws2 = wb.Worksheets("Schadwagenarchiv") 'Wert für das Arbeitsblatt "Schadwagenarchiv" _
setzen
iRow = ws1.Cells(Rows.Count, "B").End(xlUp).Row ' letzte belegte Zeile im Arbeitsblatt " _
Auswertung" auslesen
jRow = ws2.Cells(Rows.Count, "A").End(xlUp).Row ' letzte belegte Zeile im Arbeitsblatt " _
Schadwagenarchiv" auslesen
n = 4 ' ' im Zuge der Versuche eingefügt
rng = wb.ws1.Cells(n, "AT") ''im Zuge der Versuche eingefügt
For n = 4 To iRow Step 1
If rng 0 Then
' ursprünglicher Ausdruck:If wb.ws1.Cells(n, "AT") 0 Then
jRow = jRow + 1 ' erste freie Zeile im Arbeitsblatt "Schadwagenarchiv" _
aufsuchen
wb.ws2.rng(jRow, "A") = wb.ws1.rng(n, "B") ' Wagennummer aus " _
Auswertung" nach "Archiv" kopieren; stehen lassen
wb.ws2.rng(jRow, "B") = wb.ws1.rng(n, "C") ' Bearbeitung dito
wb.ws2.rng(jRow, "C") = wb.ws1.rng(n, "AP") ' "schadhaft seit" aus _
"Auswertung" nach "Archiv" kopieren
wb.ws1.rng(n, "AP").ClearContents ' "schadhaft seit" in " _
Auswertung" löschen
wb.ws2.rng(jRow, "D") = wb.ws1.rng(n, "AQ") ' usw. für die nä _
chsten Spalten der aktuellen Zeile
wb.ws1.rng(n, "AQ").ClearContents ' usw. für die nächsten _
Spalten der aktuellen Zeile
wb.ws2.rng(jRow, "E") = wb.ws1.rng(n, "AR") ' usw. für die nä _
chsten Spalten der aktuellen Zeile
wb.ws1.rng(n, "AR").ClearContents ' usw. für die nächsten _
Spalten der aktuellen Zeile
wb.ws2.rng(jRow, "F") = wb.ws1.rng(n, "AS") ' usw. für die nä _
chsten Spalten der aktuellen Zeile
wb.ws1.rng(n, "AS").ClearContents ' usw. für die nächsten _
Spalten der aktuellen Zeile
wb.ws2.rng(jRow, "G") = wb.ws1.rng(n, "AT") ' "schadhaft bis" aus " _
Auswertung" nach "Archiv" kopieren
wb.ws1.rng(n, "AT").ClearContents ' "schadhaft bis" in " _
Auswertung" löschen
wb.ws2.rng(jRow, "H") = wb.ws1.rng(n, "AU") ' usw. für die nä _
chste Spalte der aktuellen Zeile
wb.ws1.rng(n, "AU").ClearContents ' usw. für die nächste _
Spalte der aktuellen Zeile
jRow = jRow + 1 ' erste freie _
Zeile im Arbeitsblatt "Schadwagenarchiv" weiterzählen
End If
Next n
End Sub