rabitionismus
Goto Top

Excel Datenablage

Hi,
ich habe ein Excel Ablageproblem...Ziel ist es aus einer Rechnungseingabemaske die Daten zu kopieren und in eine Tabelle(gleiche Datei) abzulegen(einfügen). Dabei ist natürlich wichtig, dass er erstmal die nächste freie Zeile ermittelt.

Soweit so gut. Kopieren tut er, letzte Zeile ermitteln auch...Das mit dem einfügen ist seltsamer Weise mein Problem.
Obwohl er die Daten in einer anderen Tabelle einfügt, bekomme ich die Nachricht, dass es Typenunverträglich ist:

Sub Ablage()

Dim lastRow As Long
Dim firstRow As Long

'Kopiert Rechnungsdaten
Worksheets("Rechnungseingabe").Select
Range("A10:H24").Select
Selection.Copy

'Zählt die bereitsabgelegten Zeilen
Worksheets("PreOrder").Select
firstRow = Range("A2").EntireRow.Select
lastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1

'Fügt in die erste freie Zeile ein
ZielZeile = Cells(lastRow, 1).Select
Set ZielZeile = Selection.PasteSpecial(xlPasteValues)

Worksheets("Rechnungseingabe").Select
MsgBox "Daten sind abgelegt!"

End Sub

Ich nehme an, dass es daran liegt, das PasteSpecial eine Range benötigt. Leider weiß ich nicht wie ich diese vernünftig hier deklariere...Kann mir jemand helfen?

Content-Key: 132149

Url: https://administrator.de/contentid/132149

Printed on: April 16, 2024 at 10:04 o'clock

Member: Snowman25
Snowman25 Dec 22, 2009 at 14:15:08 (UTC)
Goto Top
als Range gibts du ihm einfach die eine Zelle an, also statt Cells(lastrow,1) ein Range(Cells(lestrow,1),Cells(lastrow,1))
Member: Rabitionismus
Rabitionismus Dec 22, 2009 at 14:27:13 (UTC)
Goto Top
Great! Vielen Dank dir! Funktioniert endlich!
Ich hab noch einiges zu lernen...
Mitglied: 76109
76109 Dec 22, 2009 at 16:04:31 (UTC)
Goto Top
Hallo zusammen!

Wobei man das Ganze auch weniger umständlich machen kann:
Sub Ablage()
    Dim Wks As Worksheet, NextLine As Long
    
    Set Wks = Sheets("PreOrder")  
    
    Sheets("Rechnungseingabe").Range("A10:H24").Copy  
    
    NextLine = Wks.Cells(Wks.Rows.Count, "A").End(xlUp).Row + 1  
    
    Wks.Cells(NextLine, "A").PasteSpecial Paste:=xlPasteValues  
    
    Application.CutCopyMode = False
    
    MsgBox "Daten sind abgelegt!"  
End Sub
Und wenn die Zellen im gleichem Format kopiert werden können, dann so:
Sub Ablage()
    Dim Wks As Worksheet, NextLine As Long
    
    Set Wks = Sheets("PreOrder")  
    
    NextLine = Wks.Cells(Wks.Rows.Count, "A").End(xlUp).Row + 1  
    
    Sheets("Rechnungseingabe").Range("A10:H24").Copy Destination:=Wks.Cells(NextLine, "A")  
    
    Application.CutCopyMode = False
    
    MsgBox "Daten sind abgelegt!"  
End Sub
Gruß Dieter