Daten aus einem Tabellenblatt in andere kopier
04.09.2012 11:39:35
fcs
Hallo Frank,
hier mal die Einfachst-Lösung, für das Kopieren, wie ich es aus deiner Beschreibung herauslesen konnte.
Die Namen der Tabellenblätter und die jeweils zu kopierenden Spalten muss du im Code ggf. anpassen.
Gruß
Franz
Sub CopyData()
Dim wks_Q As Worksheet, wks_Z1 As Worksheet, wks_Z2 As Worksheet
Dim lngZeile As Long, StatusCalc As Long, rngCopy As Range
Set wks_Q = ActiveSheet
If MsgBox(Prompt:="Daten aus dem aktiven Tabellenblatt """ & wks_Q.Name _
& """ nach Blatt ""Datum 1"" und ""Datum 2"" kopieren?", _
Buttons:=vbQuestion + vbOKCancel, _
Title:="Artikeldaten kopieren") = vbCancel Then GoTo Beenden
Set wks_Z1 = ActiveWorkbook.Worksheets("Datum 1")
Set wks_Z2 = ActiveWorkbook.Worksheets("Datum 2")
'Makrobremsen lösen
With Application
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
End With
'Altdaten ohne Zeile 1 in den Zielblättern löschen
With wks_Z1
lngZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
If lngZeile > 1 Then .Range(.Rows(2), .Rows(lngZeile)).Delete
End With
With wks_Z2
lngZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
If lngZeile > 1 Then .Range(.Rows(2), .Rows(lngZeile)).Delete
End With
With wks_Q
'letzte Zeile mit Daten in Spalte A (Artikelnummer) ermitteln
lngZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
'Daten in Spalten A und B (Art-Nr, Bezeichnung) ab Zeile 2 in Datums-Tabellen kopieren
Set rngCopy = .Range(.Cells(2, 1), .Cells(lngZeile, 2))
rngCopy.Copy Destination:=wks_Z1.Cells(2, 1)
rngCopy.Copy Destination:=wks_Z2.Cells(2, 1)
'Daten in Spalten E bis F (Datum 1, Ausgang, Eingang) ab Zeile 2 in Datum1-Tabelle kopieren
Set rngCopy = .Range(.Cells(2, 5), .Cells(lngZeile, 7))
rngCopy.Copy Destination:=wks_Z1.Cells(2, 3)
'Daten in Spalten H bis J (Datum 2, Ausgang, Eingang) ab Zeile 2 in Datum2-Tabelle kopieren
Set rngCopy = .Range(.Cells(2, 8), .Cells(lngZeile, 10))
rngCopy.Copy Destination:=wks_Z2.Cells(2, 3)
End With
'Makrobremsen zurücksetzen
With Application
.Calculation = StatusCalc
.ScreenUpdating = True
.EnableEvents = True
End With
Beenden:
'Variablen aufräumen
Set wks_Q = Nothing: Set wks_Z1 = Nothing: Set wks_Z2 = Nothing: Set rngCopy = Nothing
End Sub