Sub Uebertragen()
Dim wksEin As Worksheet, rng As Range, intNr As Integer
Set wksEin = Sheets("Einlesen")
For Each rng In wksEin.Range(Cells(2, 3), _
Cells(Cells(Rows.Count, 3).End(xlUp).Row, 3))
intNr = intNr + 1
With Sheets(CStr(intNr))
rng.Resize(, 12).Copy .Cells(7, 3)
rng.Offset(, -2).Resize(, 2).Copy .Cells(3, 2).Resize(, 2)
End With
Next rng
End Sub
Hier wird nicht geprüft, ob die Ausgabeblätter vorhanden sind, dafür sollte dein Makro schon sorgen.
(Einfacher wäre wohl, Erstellen und Kopieren in einem Makro zusammenzufassen.)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Sub Datentransfer_AFA()
Dim wks, wks1, wks2 As Worksheet
Dim i, Anzahl, intNr As Integer
Dim rng As Range
'# Anzahl der zu erstellenden Kopien eingeben
Anzahl = InputBox("Kopienanzahl eingeben")
'# SAP Uploaddatei kopieren
Set wks = Worksheets("Sheet1")
ActiveSheet.Unprotect
For i = 1 To Anzahl
wks.Copy after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = i
Next i
For i = 1 To Anzahl
Set wks2 = Worksheets(Format(i, "0"))
'# vorhandene Daten im Zielbereich löschen
wks2.Range(wks2.Cells(7, 1), wks2.Cells(1000, 14)).ClearContents
Next i
Set wks1 = Worksheets("Einlesen")
For Each rng In wks1.Range(Cells(2, 3), _
Cells(Cells(Rows.Count, 3).End(xlUp).Row, 3))
intNr = intNr + 1
With Sheets(CStr(intNr))
rng.Resize(, 12).Copy .Cells(7, 3)
rng.Offset(, -2).Resize(, 2).Copy .Cells(3, 2).Resize(, 2)
End With
Next rng
End Sub
vielleicht hast Du noch eine Idee woran es liegen kann?
Micha
Sub Datentransfer_AFA()
Dim wks As Worksheet, i As Integer, Anzahl As Integer
Set wks = Worksheets("Sheet1")
wks.Unprotect
With Worksheets("Einlesen")
'# Anzahl der zu erstellenden Kopien eingeben
Anzahl = .Cells(.Rows.Count, 3).End(xlUp).Row - 1 ' wenn für alle Zeilen
Anzahl = InputBox("Kopienanzahl eingeben") ' wenn für eingegebene Zahl
'# SAP Uploaddatei kopieren
For i = 2 To Anzahl + 1
wks.Copy after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = CStr(i - 1)
'# vorhandene Daten im Zielbereich löschen
Range(Cells(7, 1), Cells(1000, 14)).ClearContents
'# Daten von Blatt "Einlesen" kopieren
.Cells(i, 1).Resize(, 2).Copy Cells(3, 2)
.Cells(i, 3).Resize(, 12).Copy Cells(7, 3)
'# Spaltenbreite automatisch
Range(Columns(1), Columns(14)).AutoFit
Next i
End With
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
P.S.: Einfacher wäre das Ganze gewesen, wenn du deine Mappe gleich inklusive Modul gepostet hättest.