Clever-Excel-Forum

Normale Version: Tabelle Kopieren und in anderes Datenblatt einfügenVBA
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

kleines Problem,
bei drücken von commandButton1 will ich die Tabelle in Datenblatt1 kopieren und in Datenblatt2 einfügen.

Die Daten der Tabelle verändern sich jeden Tag und der Kopiervorgang muss auch täglich von Datenblatt1 zu Datenblatt 2 gemacht wird.

Zum Beispiel: die Daten vom zweiten Tag müssen nicht die Daten vom ersten Tag überschrieben werden zwecks Auswertung der Daten.

Der Bereich "A4:R4" der Tabelle bleibt konstant, aber die Zeilen verändern sich jeden Tag (manchmal 17, 25,  oder 70…..)


Mit dem folgenden Code kann ich nur einmal kopiert und wenn ich den Kopiervorgang wiederhole werden die ersten Daten leider überschrieben:

Sub Button1()
'
' Button1 Makro
'
 
'
    Range("A4:R17").Select
    Selection.Copy
    Sheets("Tabelle2").Select
    Range("A4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
End Sub
 
Eine Excel-Datei ist im Anhang als Beispiel
Der Code dafür ist sicherlich einfach, aber ich weiß leider nicht wie.
Für Ihre Bemühungen Danke ich Ihnen im Voraus.
Hallo,

ersetze
Range("A4").Select
durch
Cells(Rows.Count, 1).End(xlUp).Offset(1).Select
Gruß Uwe
Hallo,


Zitat:Mit dem folgenden Code kann ich nur einmal kopiert und wenn ich den Kopiervorgang wiederhole werden die ersten Daten leider überschrieben:

... und verrätst Du uns, ob es eine Spalte gibt, deren Zellen immer einen Eintrag haben, also durchgängig nicht leer sind,
 beispielsweise eine Datumspalte oder sowas. Dann könnte man nämlich die letzte bereits in Gebrauch befindliche Zeile ermitteln
und mit der nächsten Kopie eben in der Zeile darunter anfangen.
Hallo,

... ups, ... daß da schon eine Datei existiert, das hatte ich vornehm überlesen.  :19:

Uwe  hat Dir ja nun schon eine Lösung gezeigt.
Hallo,

ich danke Dir für die schnelle Antwort.
Ich habe:
Range("A4").Select
durch
Cells(Rows.Count, 1).End(xlUp).Offset(1).Select
ersetzt.
Und das hat gut geklappt und die Daten werden nicht überschrieben aber, wenn ich kopiere, wurden immer 14 Zeilen kopiert. Das heißt, wenn ich eine Tabelle mit 100 Zeilen kopieren werde, werden nur 14 Zeilen davon kopiert.(siehe Excel-Datei)

gibt es einen bestimmten Befehl dafür??
Hallo,

Zitat:wenn ich kopiere, wurden immer 14 Zeilen kopiert. Das heißt, wenn ich eine Tabelle mit 100 Zeilen kopieren werde, werden nur 14 Zeilen davon kopiert.(siehe Excel-Datei)

Also, Deine Datei habe ich noch nicht gesehen. Trotzdem liegt bisher alles offen dar
Da steht doch, was Du kopieren willst ... und das sind ganz gewiß keine 100 Zeilen.

Zitat:Range("A4:R17").Select
Selection.Copy
Hallo,

dann halt so:
Sub Button1()
Range(Rows(4), Cells(Rows.Count, 1).End(xlUp).EntireRow).Resize(, 18).Select
Selection.Copy
Sheets("Tabelle2").Select
Cells(Rows.Count, 1).End(xlUp).Offset(1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
End Sub
Gruß Uwe
Hallo,

@ Kuwer: ich danke Dir sehr für deine Hilfe. Das ist genau was ich brauche Smile

@ [b]Käpt'n Blaubär: in meinem Beispiel war 14 Zeilen zu kopieren, aber manchmal muss ich eine Tabelle mit 100 Zeilen kopieren.[/b]

[b]Ihr seid alle Spitze, ich danke euch allen[/b]

[b]Gruß[/b]
[b]Alnour[/b]