Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Kopieren und einfügen VBA
#1
Rainbow 
Code:
Public Sub Zeilen_einfügen()
Dim i As Long, loLetzte As Long
 
With Worksheets("Tabelle1") 'Battname anpassen
   loLetzte = .Cells(.Rows.Count, 20).End(xlUp).Row 'Zahl bezieht sich auf das eindeutige Merkmal, hier die Hilfsspalte
   For i = loLetzte To 6 Step -1 'Ab welcher Spalte soll die Logik des Makros greifen. Anpassen kann man die erste Zahl. bei der Zahl minus 1 beginnt das Makro
       If .Cells(i, 20) <> "" And .Cells(i - 1, 20) <> "" Then 'Hintere Zahl in Klammer gibt die Spalte des Bezugs an
           If .Cells(i, 20).Value <> .Cells(i - 1, 20).Value Then 'Hintere Zahl in Klammer gibt die Spalte des Bezugs an
               .Rows(i - 1).Copy
               .Rows(i).Resize(20).Insert 'Zahl in Klammer gibt die Anzahl der einzufügenden Zeilen an
               Application.CutCopyMode = False
           End If
       End If
   Next i
End With
             
End Sub
Hallo zusammen, oben stehender Code sorgt dafür dass in Tabelle1 20 mal die Zeile kopiert und einfügt wenn in der 20. Spalte ein neuer Name kommt
Jetzt würde ich gerne (nachdem das erste Makro durchgelaufen ist und die 20 Zeilen kopiert hat) die Information aus dem Reiter(Tabelle2)A1:S21 kopieren und in Tabelle1 ab U5 einfügen. Der Bereich aus Tabelle2 soll so lange in Tabelle 1 (untereinander) eingefügt werden bis in Spalte 20 keine Eintragung mehr vorhanden ist.
Kann das jemand nachvollziehen ^^
Beste Grüße
Antworten Top
#2
Hallo,

Zitat:Kann das jemand nachvollziehen ^^

ich weiß nicht, ob das jemand nachvollziehen kann, ich jedenfalls kann es nicht.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#3
Hi,
mit Anhang ist es sehr wahrscheinlich besser =)

Der Code hinter dem CommandButton in Tabelle1 sorgt dafür dass eine Zeile 20 mal kopiert und untereinander eingefügt wird, wenn in Spalte T ein neuer Name steht. Wenn das durchlaufen ist hätte ich nun gerne als anschließende Aktion das der gelb markierte Bereich aus Tabelle2 A1:S21 in Tabelle 1 ab U5 kopiert wird. Der Bereich soll als Schleife immer wieder kopiert werden (siehe angehängtes Bild), bis in Spalte T kein Eintrag mehr steht. 

Ich hoffe das war deutlicher


Angehängte Dateien Thumbnail(s)
   

.xlsm   Test.xlsm (Größe: 27,5 KB / Downloads: 4)
Antworten Top
#4
Hallöchen,

das Kopieren sollte doch kein Problem sein? Im Prinzip
Range("A1:S21).Copy
Range("U5").Paste
Natürlich ggf. noch mit den Blattnamen davor.

Dann machst Du einfach weiter mit einer Schleife, die alle 20 Zeilen prüft, ob in S was steht. Musst ja nicht jede Zeile prüfen, wenn Du immer die Daten von A1:A21 einfügst. Allerdings passen die Daten doch nicht ganz zueinander. Beim Ziel nimmst Du 20 Zeilen, bei der Quelle 21. Soll da die 21. Zeile überschrieben werden?
Also, im Prinzip nach den obigen beiden Zeilen dann so:
iCnt=20
Do While Cells(iCnt,"S").Value <> ""
Cells(icnt+5,"U").Paste
iCnt=iCnt+20
Loop
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#5
Moin André!
Die .Paste-Methode funktioniert nur bei einem aktivierten Sheet-Objekt!
(Das weißt Du natürlich, aber ich wollte Deinen Flüchtigkeitsfehler nicht unkommentiert lassen)

Range("A1:B21").Copy
ActiveSheet.Paste Range("C1")


Außerdem ist sie natürlich überflüssig, weil die .Copy-Methode den benannten Parameter Destination:= hat:

Range("A1:B21").Copy Range("C1")

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste