Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Excel VBA bestimmte Spalten Kopieren, weiter vor e

Excel VBA bestimmte Spalten Kopieren, weiter vor e
09.03.2016 16:26:26
Susi
Liebe VBA Genies,
mit Durchsuchen vom Internet habe ich mir schon so einige kleine Makros zusammengebastelt. Heute finde ich aber nichts, deshalb wende ich mich an euch.
Aufgezeichnet habe ich folgendes Makro
Sub Makro4()
' Makro4 Makro
Range("A1").Select
Selection.End(xlToRight).Select
Columns("CX:DD").Select
Range("DD1").Activate
Selection.Copy
Columns("CT:CT").Select
Selection.Insert Shift:=xlToRight
Application.CutCopyMode = False
End Sub
jetzt soll es so umgebaut werden, das immer die letzten 7 Spalten Kopiert werden und 4 Spalten vorher wieder eingefügt werden sollen. Da dies jeden Monat erneut geschehen soll und sich die Liste dann jeweils um die Spalten erweitert ... kann ich nicht wie oben in dem aufgezeichneten Makro nehmen. Meine letzten 7 Spalten enthalten jede Menge Formeln, die für die anschließende Berechnung wichtig sind.
Vorab schon mal vielen Dank für Euro Mühe.
Gruß Susi

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA bestimmte Spalten Kopieren, weiter vor e
09.03.2016 18:22:45
Michael
Hi Susi,
versuch's mal damit:
Sub spaltenKopieren()
Dim spalte As Long
spalte = Range("ZZ1").End(xlToLeft).Column
If spalte 
... geht halt nur bis ZZ
Schöne Grüße,
Michael

AW: Excel VBA bestimmte Spalten Kopieren, weiter vor e
10.03.2016 12:48:46
Susi
Hallo Michael,
danke für Deine Hilfe, hat mir sehr geholfen.
Habe an dem Marko noch ein bisschen gebastelt und so sieht es jetzt aus und schein zu funktionieren.
Wenn ein Schönheitsfehler drin ist, der evtl. zu Problemen führen könnte, bin ich für Hinweise offen.
Sub spaltenKopieren()
Dim spalte As Long
spalte = Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Column
Columns(spalte - 6).Resize(, 7).Copy
Columns(spalte - 10).Insert Shift:=xlToRight
Application.CutCopyMode = False
End Sub
Für andere Leien
Diese Zeile
spalte = Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Column
'habe ich bei http://www.excel-inside.de/vba-loesungen/ gefunden. Da findet man tolle Anregungen.
Gruß Susi

Anzeige
Danke für die Rückmeldung
10.03.2016 15:46:43
Michael
Hi Susi,
die Ermittlung der rechtesten Spalte ist jetzt deutlich "sauberer", danke für den Hinweis.
Es mag in Deinem Fall nicht definitiv erforderlich sein, aber die Zeile mit dem kleiner 10 verhindert, daß das Makro mit einer Fehlermeldung abbricht, falls nicht genug Spalten für die Aktionen vorhanden sein sollten (vielleicht, wenn Du ein neues Blatt anlegst) - die frißt kein Brot, ich würde sie drinlassen.
Wenn wir schon bei Tips sind: Papa Herber hat auch einiges zu bieten:
https://www.herber.de/xlfaq/index.html
Schöne Grüße,
Michael

Anzeige
AW: Danke für die Rückmeldung
10.03.2016 16:37:16
Susi
Hallo Michael,
die kleiner 10 habe ich rausgenommen, weil immer "geht nicht" kam.
Habe sie jetzt unter
spalte = Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Column
reinkopiert und da geht es.
Noch etwas aus der ursprünglich
Columns(spalte - 9)
musste ich
Columns(spalte - 10)
machen, damit die Spalten an richtiger Stelle landen.
Nochmals vielen Dank. Klappt Super.
Herber kenne ich auch, da habe ich auch schon so einiges gefunden.
Gruß Susi

Anzeige
ok, gerne, Gruß zurück owT
11.03.2016 09:14:37
Michael
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel VBA zum Kopieren bestimmter Spalten


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und gehe in den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke im Menü auf Einfügen > Modul.
  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub spaltenKopieren()
       Dim spalte As Long
       spalte = Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Column
       Columns(spalte - 6).Resize(, 7).Copy
       Columns(spalte - 10).Insert Shift:=xlToRight
       Application.CutCopyMode = False
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus:

    • Gehe auf Entwicklertools > Makros, wähle spaltenKopieren und klicke auf Ausführen.

Dieser Code kopiert die letzten 7 Spalten und fügt sie 4 Spalten vorher wieder ein.


Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 1004: Die Methode 'Insert' für das Objekt 'Columns' ist fehlgeschlagen."

    • Lösung: Stelle sicher, dass genügend Platz vorhanden ist, um die neuen Spalten einzufügen. Wenn nicht, könnte es zu diesem Fehler kommen.
  • Fehler: "Laufzeitfehler 9: Index außerhalb des gültigen Bereichs."

    • Lösung: Überprüfe, ob das Arbeitsblatt, auf das verwiesen wird, tatsächlich existiert. Möglicherweise ist der Name des Arbeitsblatts nicht korrekt.

Alternative Methoden

  • Verwenden von Excel-Formeln: Du kannst auch die INDEX- und MATCH-Funktionen verwenden, um Daten aus bestimmten Spalten zu kopieren, ohne VBA zu nutzen.

  • Power Query: Mit Power Query kannst du Daten transformieren und Spalten effizient verwalten, ohne VBA zu programmieren. Dies ist besonders nützlich für wiederkehrende Aufgaben.


Praktische Beispiele

  1. Beispiel für das Kopieren von Spalten: Wenn Du eine Tabelle hast, die jeden Monat wächst, kannst Du die oben genannten Schritte verwenden, um immer die letzten 7 Spalten zu kopieren und sie 4 Spalten vorher einzufügen.

  2. Beispiel für das Einfügen von Formeln: Du kannst nach dem Kopieren der Spalten zusätzlich eine Formel in die neuen Spalten einfügen, um Berechnungen durchzuführen.


Tipps für Profis

  • Fehlerbehandlung: Füge On Error Resume Next am Anfang deines Makros hinzu, um Laufzeitfehler zu ignorieren und stattdessen eine benutzerfreundliche Fehlermeldung zu zeigen.

  • Dokumentation: Kommentiere deinen Code gut, damit du und andere den Zweck jeder Zeile leicht nachvollziehen können.

  • Makros optimieren: Achte darauf, dass dein Makro so optimiert ist, dass es schnell läuft, besonders wenn Du mit großen Datenmengen arbeitest.


FAQ: Häufige Fragen

1. Wie oft kann ich das Makro verwenden?
Das Makro kann bei Bedarf jederzeit ausgeführt werden, solange die Struktur deiner Daten gleich bleibt.

2. Funktioniert das Makro in allen Excel-Versionen?
Das Makro sollte in den meisten modernen Excel-Versionen (2010 und höher) funktionieren. Achte darauf, dass die VBA-Referenzen korrekt gesetzt sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige