345 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Leute,

ich habe folgendes Problem. Ich möchte mit einem CommandButton Werte von einem Tabellenblatt in ein anderes kopieres. Diese Werte sollen an eine bestimmte Startposition beim ersten Klicken des Buttons kopiert werden (hier: D23) und bei einem weiteren Klicken sollen die Werte eine Zeile darunter eingefügt werden.

Also 1.Klick --> D23, zweiter Klick --> D24 usw....

Mit meinem Code bekomme ich es hin die Werte zu kopieren und auch untereinander anzuorden, aber das speichern beginnt bei mir in D2 und nicht D23. Ich weiß nicht, wie ich diese Zelle auswählen kann. (Bei euren Lösungen beachtet bitte, dass ich keine neue Zeile einfügen möchte, da das mein Zieltabellenblatt verändert)

Private Sub CommandButton2_Click()
Dim lngZeile As Long
With Worksheets("Tabelle3")
Range("G3,H3,I3,J3,K3,L3").Copy
lngZeile = .UsedRange.Row + .UsedRange.Rows.Count
Worksheets("Tabelle3").Range("D" & lngZeile).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
End With
End Sub


Vielen Dank
SpreeQuell

4 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo,

probier es mal so:

Private Sub CommandButton2_Click()
Dim lngZeile As Long

With Worksheets("Tabelle3")
.Range("G3:L3").Copy
'letzte beschriebene Zeile in Spalte D ermitteln
lngZeile = .Cells(Rows.Count, 4).End(xlUp).Row + 1
'Einfügen erst ab Zeile 23
If lngZeile < 23 Then lngZeile = 23
.Range("D" & lngZeile).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
End With

'Markierung aufheben
Application.CutCopyMode = False

End Sub


Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.

vielen Dank für die schnelle Antwort, aber leider funktioniert es noch nicht ganz.
Den Code für die Ermittlung der letzten Zeile müsste man irgendwie anpassen. Ich habe es auch schon auf die gleiche Weise probiert, allerdings funktiniert dieser Befehl aufgrund des Aufbaus meines Tabellenblattes nicht.

'letzte beschriebene Zeile in Spalte D ermitteln
lngZeile = .Cells(Rows.Count, 4).End(xlUp).Row + 1

Ich habe sozusagen nur einen Bereich von D23-D34, in den ich kopieren kann. Das hätte ich anmerken müssen. Danach stehen wieder beschriebene Zellen, deshalb funktioniert das suchen nach der letzten Zeile nicht.

Vielleicht macht es das aber auch einfacher, denn ich möchte nur in diesen Bereich von D23-D34 hineinkopieren. Kann man dafür eine If-Bedingung oder sonstiges einbauen, aber trotzdem so, dass untereinander kopiert wird?

Gruß
SpreeQuell
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo,

ja, das hättest du erwähnen sollen ;-). Dann eben so:

Private Sub CommandButton2_Click()
Dim lngZeile As Long

With Worksheets("Tabelle3")
'letzte beschriebene Zeile in Spalte D ermitteln
For lngZeile = 23 To 34
If .Cells(lngZeile, 4) = "" Then Exit For
Next lngZeile
If lngZeile > 34 Then
MsgBox "Achtung! Zeile 34 ist erreicht! Es können keine Daten mehr eingefügt werden!", 16, "Abbruch"
Exit Sub
End If

.Range("G3:L3").Copy
.Range("D" & lngZeile).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
End With

'Markierung aufheben
Application.CutCopyMode = False

End Sub

Ich gehe davon aus, dass in den Zellen D34 bis D34 immer etwas steht, wenn dort Daten hineinkopiert werden.

Gruß

M.O.
0 Punkte
Beantwortet von
Danke M.O. das hat mein Problem perfekt gelöst!

Gruß SpreeQell
...