Clever-Excel-Forum

Normale Version: VBA - Zelleninhalt in neues Dokument kopieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Abend zusammen und erstmal ein Hallo in die Runde.

Bin relativ neu mit VBA unterwegs und bin nun auf der Suche nach einem Weg, Zelleninhalte von einem per "öffnen-Dialog" ausgewählen Dokument in ein immer gleich bleibendes Ziel-Dokument zu kopieren.

Das mit der Auswahl habe ich schon erfolgreich hinbekommen und auch das erste manuell eingegebene kopieren funktioniert...

Das sieht im Moment wie folgt aus :

Code:
wbSrc.Worksheets("wsAC60").Range("A4").copy Destination:=wbDest.Worksheets("Aufmaß").Range("C12:V12")
wbSrc.Worksheets("wsAC60").Range("C4").copy Destination:=wbDest.Worksheets("Aufmaß").Range("W12:AF12")
wbSrc.Worksheets("wsAC60").Range("D4").copy Destination:=wbDest.Worksheets("Aufmaß").Range("AQ12:CD12")
wbSrc.Worksheets("wsAC60").Range("J4").copy Destination:=wbDest.Worksheets("Aufmaß").Range("CT12:DC12")
wbSrc.Worksheets("wsAC60").Range("I4").copy Destination:=wbDest.Worksheets("Aufmaß").Range("DD12:DM12")
wbSrc.Worksheets("wsAC60").Range("LineNr").copy Destination:=wbDest.Worksheets("Aufmaß").Range("CE12:CI12")
wbSrc.Worksheets("wsAC60").Range("USNr").copy Destination:=wbDest.Worksheets("Aufmaß").Range("CJ12:CN12")
wbSrc.Worksheets("wsAC60").Range("ModulNr").copy Destination:=wbDest.Worksheets("Aufmaß").Range("CO12:CS12")


nun würde es aber in die nächste freie Zeile gehen und im Sheet wsAC60 würde A4 zu A8, C4 zu C8 und so weiter und im Zeil dann einfach eine Zeile tiefer.


Irgendwann kommt dann ein Sprung im wbSrc von A28 zu A35 zu A36 usw und es kann auch mal eine oder mehrere Zeilen leer sein.


Und das würde ich gerne alles iwie in nem Code automatisieren.... :s 

Jetzt seid ihr dran :100:
Hallöchen,

die letzte belegte Zelle einer Spalte bekommt man so raus:

Cells(Rows.Count, 1).End(xlUp).Row

wenn es um Spalte A (=1) geht. Will man eine Zeile tiefer, dann muss man dazu 1 addieren. Damit man nicht immer so viel schreiben muss, könnte an das in eine Variable packen:

lRow=Cells(Rows.Count, 1).End(xlUp).Row + 1

Im Range kann man das dann so verwenden:

Range("A" & lRow & ":D" & lRow)

Alternativ könnte man auch mit einem Offset arbeiten:

Range("A1:D1).Offset(lRow, 0)

Da kann man immer von Zeile 1 oder welche auch immer einem da geeignet erscheint aus programmieren.