Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1092to1096
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Statt in freie Spalte kopieren, überschreibt Makro

Statt in freie Spalte kopieren, überschreibt Makro
Tanja
Hallo Welt,
ich bin's nochmal.
Ich habe hier ein chickes Makro gefunden, von dem ich dachte, dass es eine Spalte kopiert und dann in der nächsten freien Spalte einfügt. Tut es auch soweit.
Ich habe es in einem Sheet zum Testen verwendet. Dort kopiert es Spalte F und kopiert sie zu Spalte G. Bei erneuter Anwendung kopiert es Spalte F und fügt sie in H ein. So hätte ich das gerne.
Aber in meinem Sheet kopiert es Spalte F, fügt es in die nächste freie Spalte ein und bei erneuter Betätigung wird einfach der Inhalt, den ich vorher reinkopiert habe, überschrieben?!
Kann mir jemand helfen?
Sub kopieren()
Worksheets("Tabelle1").Range("F:F").Copy
Worksheets("Tabelle1").Cells(1, Worksheets("Tabelle1"). _
Columns.Count).End(xlToLeft).Offset(0, 1). _
PasteSpecial Paste:=xlValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Das wäre wunderbar!
Viele Grüße,
Tanja
AW: Statt in freie Spalte kopieren, überschreibt Makro
06.08.2009 14:57:24
Tanja
Habe sogar "schon" rausgefunden, dass es daran liegt, dass in der ersten Zeile keine Daten stehen. Daten stehen bei mir erst ab Zeile 8 (Überschriften).
Wo muss ich was anpassen?
Viele Grüße,
Tanja
AW: Statt in freie Spalte kopieren, überschreibt Makro
06.08.2009 15:15:57
ede
Hallo,
Worksheets("Tabelle1").Cells(8, Worksheets...
Gruss
AW: Statt in freie Spalte kopieren, überschreibt Makro
06.08.2009 15:22:51
Tanja
Hallo Ede,
ich danke dir für die schnelle Antwort.
Wenn ich das aber entsprechend umänder, entsteht ein Laufzeitfehler:
Die PasteSpecial-Methode des Range-Objektes konnte nicht ausgeführt werden.
Eine Idee?
Gruß,
Tanja
AW: Statt in freie Spalte kopieren, überschreibt Makro
06.08.2009 15:26:36
Adelhorst
Hallo Tanja.
Der Laufzeitfehler entsteht, weil du eine komplette Spalte kopierst, aber mit der '8' in Ede's Lösung markierst du keine komplette Spalte zum Einfügen, also weniger Zellen.
Da mosert Excel ohne Frage.
Gruss Adelhorst
Anzeige
AW: Statt in freie Spalte kopieren, überschreibt Makro
06.08.2009 15:23:28
Adelhorst
Hallo Tanja.
Probier dies mal aus:
Sub Makro1()
Dim lastColumn As Long
lastColumn = Worksheets("Tabelle1").Cells(8, Worksheets("Tabelle1").Columns.Count).End( _
xlToLeft).Column
Worksheets("Tabelle1").Range("F:F").Copy
Worksheets("Tabelle1").Columns(lastColumn + 1).PasteSpecial Paste:=xlValues, _
Operation:=xlNone,  SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End Sub

Gruss Adelhorst
Einwandfrei!
06.08.2009 15:31:36
Tanja
Danke dir!
Hättest du vielleicht noch eine Idee, wie ich mehrere dieser Anweisungen in ein Makro verbauen kann?
Zum Beispiel erst Spalte F aus Tabelle 1 kopieren, danach evtl Spalte D aus Tabelle 2, usw?
Falls nicht, ich find's so auch schon super! :)
Anzeige
AW: Einwandfrei!
06.08.2009 15:52:13
Adelhorst
Natürlich Tanja.
Du rufst die nun parametrierte

Sub einfach öfters aus dem Macro1 auf.
Die PrimaerZeile ist die Zeile, die immer einen Inhalt haben sollte, denn danach wird die nä _
chste freie Spalte gesucht.
(Die End-Funktion kann nicht mehrere Zeilen/Spalten auf Inhalte prüfen.
Sie nimmt immer die oberste Zeile/ linke Spalte des Bereiches aus, der ihr übergeben wird!
Auch übersieht sie ausgeblendete Zeilen!)

Sub Macro1()
SpaltenKopieren "Tabelle1", "F", 8
SpaltenKopieren "Tabelle2", "D", 8
End Sub

Sub SpaltenKopieren(TabellenBlatt As String, Spalte As String, PrimaerZeile As Long)
Dim letzteSpalte As Long
letzteSpalte = Worksheets(TabellenBlatt).Cells(PrimaerZeile, 256).End(xlToLeft).Column
Worksheets(TabellenBlatt).Columns(Spalte).Copy
Worksheets(TabellenBlatt).Columns(letzteSpalte + 1).PasteSpecial Paste:=xlValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
NBoch Fragen ? :-)
Gruss Adelhorst
Anzeige
AW: Einwandfrei!
06.08.2009 15:57:07
Tanja
Ich danke dir, Adelhorst!
Ich werd's gleich morgen früh ausprobieren und mich dir dann mitteilen! :)
Viele Grüße,
Tanja
Spalte ans Ende kopieren
06.08.2009 21:59:53
Erich
Hi Tanja,
hier noch eine, genauer zwei Alternativen.
Beim Aufruf von SpalteKopieVal werden nur Werte kopiert, ohne Formeln und Formate.
Beim Aufruf von SpalteKopieAll wird alles kopiert, auch Formeln und Formate.

Option Explicit
Sub SpaltKop()
Sheets("Tabelle1").Select
SpalteKopieVal Sheets("Tabelle1 (2)"), 11 ' 11 ist Spalte K
SpalteKopieAll ActiveSheet, 3             '  3 ist Spalte C
End Sub
Sub SpalteKopieVal(wks As Worksheet, lngSpalte As Long)
' Kopiert Werte von Blatt!Spalte in das aktive Blatt hinter die letzte Spalte
Dim lngCol As Long
With ActiveSheet
lngCol = LetzteSpalteBer(1, .Rows.Count)   ' Zeilenbereich ist ganze Tab.
If lngCol 
Zum Spielen hier eine Mappe: https://www.herber.de/bbs/user/63678.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Beides super!
07.08.2009 08:43:31
Tanja
Guten Morgen,
beides klappt wunderbar - ich komme sogar (erstaunlicherweise) damit zurecht :)))
Ich versuche nur gerade, wie ich mehrere zusammenhängende Spalten damit kopieren kann?
SpalteKopieVal Sheets("Raten").Range("E:H")
Hab's mal damit versucht. Klappt natürlich nicht ;)
@ Erich: Was den Listenvergleich angeht - so wie das Makro jetzt ist, ist es perfekt. Dass Einträge doppelt vorkommen, habe ich dem Listenverantwortlichen mitgeteilt. Soll er sich doch darum kümmern! ;)
Ich danke euch, Adelhorst und Erich, mal wieder tausendfach! So kann das Wochenende kommen! :)
Viele Grüße,
Tanja
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige