12.5k Aufrufe
Gefragt in Tabellenkalkulation von Einsteiger_in (99 Punkte)
Hallo zusammen,

ich habe schon gegoogelt aber keine Lösung auf mein Problem gefunden bzw. nichts gefunden. Meine VBA Kenntnisse sind nicht besonders gut ausgebildet, aber bis jetzt hat es immer gereicht.

Ich will eine Spalte A von der ersten bis zu letzten beschrieben Zelle kopieren und in einem anderen Tabellenblatt wieder einfügen. Soweit so gut. Jetzt will ich aber aus dem ersten Tabellenblatt auch Spalte D kopieren. Diese ist aber nicht durchgängig gefüllt, sondern enthält auch leere Zellen. Wie schaffe ich es denn nun dass er Spalte D genauso weit markiert und kopiert, wie Spalte A, die keine leeren Zellen besitzt?

Ach ich nutze Excel 2010

Gruß und schon mal viele Dank

Chris

4 Antworten

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

wenn ich dich richtig verstanden habe, dann geht das so:

ActiveSheet.Range(Cells(1, 4), Cells(ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row, 4)).Copy


Gruß

M.O.
0 Punkte
Beantwortet von Einsteiger_in (99 Punkte)
Hallo M.O.

genau danach habe ich gesucht, perfekt.

Jetzt hat sich aber ein neues Problem ergeben. In dem neuen Tabellenblatt steht in F2 eine Formel, die ich runterkopieren will, soweit wie in Spalte A Werte stehen. Mit der Funktion


Dim letzteZeile As Long
letzteZeile = Cells.SpecialCells(xlCellTypeLastCell).Row
Range("F2").AutoFill Destination:=Range("F2:E" & letzteZeile), Type:=xlFillDefault


funktioniert es nicht, da er da die Formel bis zur allerletzten Zelle kopiert und dadurch auch sehr langsam wird.

Gruß Chris
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Chris,

nutzte statt:
letzteZeile = Cells.SpecialCells(xlCellTypeLastCell).Row

lieber
letzteZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

da hier die letzte Zeile der Spalte A ermittelt wird.
Vor dem Einfügen der Formel würde ich auch die automatische Berechnung ausschalten, damit nicht nach jedem Einfügen der Formel die Berechnung läuft. Das geht mit
Application.Calculation = xlManual


Insgesamt also so:

Dim letzteZeile As Long
letzteZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Application.Calculation = xlManual 'automatische Berechnung aus
Range("F2").AutoFill Destination:=Range("F2:E" & letzteZeile), Type:=xlFillDefault
Application.Calculation = xlAutomatic 'automatische Berechnung an


Gruß
M.O.


PS: Stimmt Range("F2:E" & letzteZeile) so?
0 Punkte
Beantwortet von Einsteiger_in (99 Punkte)
Hi M.O.,

da hast du natürlich Recht das muss F2 : F heißen und nicht F2 : E.

Vielen Dank für deine Hilfe, das hat mir sehr geholfen, weil bis ich da selbst drauf gekommen wäre :D

Gruß Chris
...