Kopieren andere Tabelle-Laufzeitfehler Select

Hallo,
bei einem einfachem kopieren einer Zelle in eine andere Tabelle. Es erscheint ein LaufzeitFehler 1004 „Die Select Methode des RangeObject konnte nicht ausgeführt werden“ und die Selectfunktion wird gelb makiert (In VBA).

Private Sub CommandButton1_Click()
Range(„D10“).Select
Selection.Copy
Sheets(„Tabelle2“).Select

Range(„B6“).Select „FEHLER“

Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Sheets(„Tabelle1“).Select
Application.CutCopyMode = False
End Sub

Wieso… hilfe.

Danke für jede Hilfe

MFG XEN55

Hallo,

achte auf eine vollständige Adressierung der Zellen (Arbeitsmappe + Tabellenblatt) sonst können Selektierungen fehlschlagen oder Bearbeitungsschritte werden in falschen Zellen oder auf falschen Tabellenblättern ausgeführt.
Die einzelnen „Select“-Befehle kannst Du Dir i.d.R. sparen, es sei denn, Du möchtest die Eingabemarkierung für die Weiterbearbeitung nach Ablauf des Makros auf eine bestimmte Position oder auf ein anderes Tabellenblatt setzen.

Vereinfacht sieht der Code so aus:

Private Sub CommandButton1\_Click()
ActiveSheet.Range("D10").Copy
With Sheets("Tabelle2")
 .Paste Destination:=.Range("B6").End(xlUp).Offset(1, 0)
 .Select 
End With
Application.CutCopyMode = False
End Sub

Viele Grüße tester

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,
erst einmal vielen Dank. Select muß ich nicht verwenden. JEdoch wenn ich den Script aufrufe klappt das kopieren, aber wie kann man noch den Befehl irgendwie übersetzte, das er zum beispiel ab Zelle B6 anfängt und dort immer erst guckt ob sie frei ist wenn ncht schreibt er in die nächste frei Zelle die er unter B6 findet.

Momentan fängt er in der zweiten Zeile bei der B spalte an.
Wie muß ich da den Befehl ändern ?

MFG
Xen55

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo, damit müsste es funktionieren:

Private Sub CommandButton1\_Click()
Dim leereZeile As Long
ActiveSheet.Range("D10").Copy
With Sheets("Tabelle2")
 leereZeile = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
 If leereZeile 

Gruß, tester!


> <small>[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]</small>

AN den Tester
Danke, vielllen Dank.

Habe schon sehr lange danach gesucht. Kenne mich mit VBA noch nicht aus.

Wenn ich das selbe nocheinmal machen wollte, stimmt das dann ??


Private Sub CommandButton1_Click()
Dim leereZeile As Long
ActiveSheet.Range(„D10“).Copy
With Sheets(„Tabelle2“)
leereZeile = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
If leereZeile

Hallo,

die zeile, in der leereZeile2 belegt wird, muss ebenfalls angepasst werden (leereZeile2 = .Cells(.Rows.Count, 3 ).End(xlUp).Row + 1), so dass in der Spalte C ( 3. Spalte) nach der ersten leeren Zeile gesucht wird.
Dann würde das Makro funktionieren, wäre allerding etwas „umständlich“ programmiert. Beispielsweise kann auf die Dimensionierung von leereZeile2 verzichtet werden, da der Inhalt der Variable leereZeile nicht mehr benötigt wird und diese Variable neu belegt werden kann.
Das Makro würde korigiert wie folgt aussehen:

Private Sub CommandButton1\_Click()
Dim leereZeile As Long
ActiveSheet.Range("D10").Copy
With Sheets("Tabelle2")
 leereZeile = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
 If leereZeile 

Wie ich Deiner Frage entnehmen kann, willst Du wohl mehrere Quellzellen in ein anderes Tabellenblatt übertragen. Bei 2 Zellen geht das Makro gerade noch, allerdings sollen mehr Werte übertragen werden, sollte man zur Vereinfachung anstelle den Code mehrfach aneinanderzureihen die Werteübertragung in eine extra Prozedur packen und über den Commandbutton mehrfach mit den entsprechenden Parametern aufrufen. Die Programmierung könnte wie folgt aussehen :

(Übrigens _Copy_ wie oben kann man sich sparen, wenn man die Eigenschaft _value_ der Zellen nutzt. Dies überträgt allerdings nur Werte und nicht Formate, wie Rahmen, Zahlenformate u.a. der Zellen):



    
    Private Sub CommandButton1\_Click()
     WertÜbertragen "D10", 2, 6
     WertÜbertragen "D11", 3, 6
    End Sub





    
    Sub WertÜbertragen(Quellzelle As String, Zielspalte As Integer, BeginnZeile As Integer)
    Dim leereZeile As Long
    With Sheets("Tabelle2")
     leereZeile = .Cells(.Rows.Count, Zielspalte).End(xlUp).Row + 1
     If leereZeile 
    
    Weitere Zellen kann man übertragen, wenn man in der Prozedur _CommandButton1\_Click()_ einfach noch neue Aufrufe der Prozedur _Wert Übertragen_ mit den Parametern Quellzelle, Spaltennummer, erste beschriftbare Zeile hinzufügt.
    
    Hoffe geholfen zu haben,
    
    viele Grüße an den "Nachtmenschen" :smile: , tester
    
    
    > <small>[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]</small>

Danke Tester
Vielen vielen vielen Dank für deine Hilfe.

Ist es eigentlich möglich bei

Private Sub CommandButton1_Click()
WertÜbertragen „D10“, 2, 6
WertÜbertragen „D11“, 3, 6
End Sub

anstatt D10 auch ein Wort einzutragen ?

MFG Xen55