ich habe aktuell folgendes Problem:
=> aus einer Quelltabelle (11 Spalten A-K) möchte ich alle mit Werten befüllte Zeilen (freilich ohne die Kopfzeile) auf Knopfdruck in eine Zieltabelle übertragen.
=> in dieser Zieltabelle sind typischerweise bereits analoge Datensätze vorhanden; die neuen Datensätze sollen in der ersten leeren Zeile darunter eingefügt werden.
=> es sollen nur Werte, keine Formeln übertragen werden.
=> in der Zieltabelle sind jedoch noch weitere Spalten (L,M,N,O) enthalten, deren Werte rechnerisch aus den entsprechenden Zellwerten in Spalte A-K der Zieltabelle bestimmt werden (also z.B. Berechnung des Bruttopreises und der Mehrwertsteuer bei vorgebenem Nettopreis und MWSt Satz in den Spalten A-K. Die Zellen in den Spalten L,M,N,O sind daher bereits mit entsprechenden Formeln belegt - soweit so klar)
=> wenn ich jetzt die aus dem Quellblatt zu übertragende Zeile in das Zielblatt als komplette Zeile nach dem nachfolgend aufgeführten Makro einfüge, dann werden verständlicherweise auch die in den Spalten L,M,N,O vorgegebenen Formeln gelöscht - eine automatische Weiterverarbeitung dieser Daten ist also nicht mehr möglich.
Sub Übertragen()
Dim oWsQ As Worksheet, oWsZ As Worksheet
Dim rngQ As Range
'setzt Verweis auf Quellblatt
Set oWsQ = Worksheets("Quellblatt")
'setzt Verweis auf Zielblatt
Set oWsZ = Worksheets("Zielblatt")
'Fehlerüberwachung ausschalten
On Error Resume Next
'setzt Verweis auf Zellen mit Werten im Quellblatt
Set rngQ = oWsQ.Rows("2:" & Rows.Count).SpecialCells(xlCellTypeConstants)
'Fehlerüberwachung einschalten
On Error GoTo 0
'wenn Zellen mit Werten vorhanden sind
If Not rngQ Is Nothing Then
'Zielblatt freigeben
oWsZ.Unprotect
'kopiere ganze Zeile(n) der Zellen mit Werten
Application.Intersect(oWsQ.Rows, rngQ.EntireRow).Copy
'unter letzte belegte Zelle in Spalte 1 des Zielblattes
With oWsZ.Cells(Rows.Count, 1).End(xlUp).Offset(1)
'Werte einfügen
.PasteSpecial xlValues
'Formate einfügen
.PasteSpecial xlFormats
End With
'Zwischenablage leeren
Application.CutCopyMode = False
'Zielblatt schützen
oWsZ.Protect
'Zellinhalte des Quellbereiches löschen
rngQ = ""
End If
End Sub
Ich denke, dieses Problem sollte grundsätzlich lösbar sein, indem man nicht die ganze Zeile ins Zielblatt überträgt, sondern nur jeweils die Zellen A bis K einer solchen Zeile. Das Zielblatt ist zunächst schreibgeschützt und soll auch nach Einfügen des Datensatzes wieder schreibgeschützt sein. Die Daten aus dem Quellblatt sollen nach Übertragen ins Zielblatt gelöscht werden (am besten ganze Zeile löschen) .
Ich kann das Makro jedoch mangels VBA know how nicht entsprechend umschreiben und darf um Eure entsprechenden Vorschläge bitten.
Vielen lieben Dank im vorhinein
Fiffi