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

Forumthread: Spalte mit VBA um eine Spalte nach rechts kopieren

Spalte mit VBA um eine Spalte nach rechts kopieren
Hagen
Hallo zusammen,
ich benötige mal eure Hilfe!
Ich möchte mit einem VBA Code den Bereich A10:A20 nach B10:B20 kopieren, bei erneutem Ablauf des Macros sollte dann der Bereich von B nach C und das nächte mal von C nach D usw Kopiert werde
Ich habe dazu aber leider keine Lösung! und hoffe einer von euch kann mir hierbei weiterhelfen!
Danke
Hagen
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
dazu brauchen wir eine Logik...
24.02.2010 12:35:31
Björn
Hallo Hagen,
ansich ist das ein relativ einfaches Problem, wir sollten nur eine Logik haben, wann welche Spalte wohin kopiert werden soll.
Beim ersten mal ist das ja noch einfach. Von A nach B. Gut.
Bei den nächsten Malen:
Irgendwie muss definert werden / herausgefunden werden, welche Spalte kopiert werden soll.
Wenn es z.B. immer die letzte Spalte ist (also weiter rechts kommt NICHTS mehr), dann wäre das eine Logik.
Falls das nicht so ist, müsstest Du eine andere Logik finden. Z.B. die Spalte, die einen bestimmten Suchbegriff enthält, oder du schreibst in irgendeine Zelle (gerne auch ausgeblendet), welche Spalte kopiert werden soll...
Gruß
Björn B.
Anzeige
AW: dazu brauchen wir eine Logik...
24.02.2010 14:07:54
Hagen
Hallo Björn,
Ja ich habe eine Logik! es sind eigentlich immer die letzten 3 Spalten, weiter rechts kommt nicht mehr:
also eigentlich A1:C10 nach B1:D10 nach C1:E10 ....
reicht das als logik? oder gibt es probleme damit das es 3Spalten sind?
Danke dir!
Gruß Hagen
AW: dazu brauchen wir eine Logik...
25.02.2010 10:13:22
Hagen
Diese Frage möchte ich nochmals als noch offen posten.
und hoffe jemand kann mir hierzu weiterhelfen.
gruß
Hagen
Anzeige
AW: dazu brauchen wir eine Logik...
25.02.2010 10:25:38
Björn
Hallo Hagen,
da ist wohl was schief gelaufen, hatte Dir gestern eigentlich nochmal ein paar Fragen gestellt, aber irgendwie hab ich wohl den falschen Knopf gedrückt... sorry.
Also nochmal:
Anisch sind 3 Spalten kein Problem, das ist (fast) der gleiche Befehl.
Du hast im ersten Beitrag geschrieben: A10:A20 nach B10:B20 kopieren, das nächste Mal B10:B20 nach C10:C20 kopieren.
Jetzt schreibst Du A1:C10 nach B1:D10 nach C1:E10.
Das sind andere Spalten und andere Zeilen...
Bevor ich da jetzt was zusammenbastel, bitte genau definieren, was passieren soll.
- Sind die Zeilen fix? Also immer 1-10? Oder könnte man die ganze Spalte kopieren?
- Die Spalten werden immer 1 nach rechts kopiert, könnte man da nicht einfach eine Spalte einfügen? Teste das mal manuell und prüfe das Ergebnis, ob das ok für Dich ist. Oder was soll z.B. nach kopieren von B1:D10 nach C1:E10 in Spalte B passieren? Nach Deiner Methode wäre Spalte B = Spalte C und nach Spalte einfügen wäre Spalte B leer.
- Soll wirklich kopiert werden oder doch eher verschoben?
Gruß
Björn B.
Anzeige
AW: dazu brauchen wir eine Logik...
25.02.2010 11:42:39
Hagen
Hallo Björn!
Danke für deine Hilfe!
Ja ich hatte geschrieben das ich A nach B und dann nach C Kopieren möchte, ich dachte das könnte ich dann selber in der Formel anpassen.
Aber richtig ist das ich A1:C10 nach B1:D10 nach C1:E10 kopieren möchte.
Nun zu deinen Fragen:
- Ja die Zeilen sind Fix! also 1bis10, die ganze Spalte kann nicht kopiert werden.
- in den Zeilen sind verschiedene Formeln, die sich auf eine Externe Datenbank beziehen, und pro Monat müssen die drei Spalten dann um eine Spalte nach rechts verschoben werden. Es sind 3 Spalten, da in der Spalte 1 die Actual Zahlen für den Monat, in Spalte 2 die Zahlen für den Rest des Monats, und in Spalte 3 die Zahlen der Vergangenen 12 Monate stehen.
- Und da ich die vergangenen Monate auch aufzeigen möchte, müssen die Zeilen Kopiert und nicht verschoben werden.
Ich hoffe ich das ist ausreichend. Anbei aber mal eine kleines Bsp ich hoffe dadurch wird es klarer.
https://www.herber.de/bbs/user/68244.xls
Gruß
Hagen
Anzeige
versuch mal das...
25.02.2010 12:17:03
Björn
Hallo Hagen,
bitte teste mal folgenden Code (bitte in den Code-Bereich des enstprechenden Blattes einfügen, NICHT in ein Modul!!!):
Sub Spalten_kopieren()
Dim spalte As Integer
'letzte Spalte ermitteln (in Zeile 2, da Zeile 1 nicht durchgehend befüllt)
spalte = Range("IV2").End(xlToLeft).Column
Range(Cells(1, spalte - 2), Cells(10, spalte)).Copy Cells(1, spalte - 1)
End Sub
Klappt das so, wie Du es brauchst?
Gruß
Björn B.
Anzeige
DANKE!
25.02.2010 14:41:40
Hagen
Hallo Björn,
Danke dir für deine Hilfe, du hast mir heute den Tag gerettet!!!
Das funktioniert alles soweit! und auch genau wie ich es brauche!
Grüße
Hagen
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Spalte mit VBA nach rechts kopieren


Schritt-für-Schritt-Anleitung

Um eine Spalte mit VBA nach rechts zu kopieren, kannst du den folgenden VBA-Code verwenden. Dieser Code kopiert den Bereich A1:C10 nach B1:D10, dann nach C1:E10 und so weiter.

  1. Öffne Excel und gehe zum gewünschten Arbeitsblatt.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Füge den folgenden Code in das entsprechende Blatt (nicht in ein Modul) ein:
Sub Spalten_kopieren()
    Dim spalte As Integer
    ' Letzte Spalte ermitteln (in Zeile 2, da Zeile 1 nicht durchgehend befüllt)
    spalte = Range("IV2").End(xlToLeft).Column
    Range(Cells(1, spalte - 2), Cells(10, spalte)).Copy Cells(1, spalte - 1)
End Sub
  1. Schließe den VBA-Editor.
  2. Führe das Makro aus, indem du erneut ALT + F8 drückst und das Makro Spalten_kopieren auswählst.

Mit jedem Ablauf des Makros wird die letzte Spalte nach rechts kopiert.


Häufige Fehler und Lösungen

  • Fehler: "Variable nicht definiert"

    • Ursache: Du hast möglicherweise den Code nicht vollständig eingefügt oder die Modul-Referenz ist nicht korrekt.
    • Lösung: Überprüfe den Code auf Schreibfehler und stelle sicher, dass du ihn im richtigen Blatt eingefügt hast.
  • Fehler: "Bereich kann nicht kopiert werden"

    • Ursache: Der zu kopierende Bereich ist außerhalb der Grenzen des Blattes.
    • Lösung: Stelle sicher, dass die Zeilen und Spalten im festgelegten Bereich vorhanden sind.

Alternative Methoden

Wenn du das Kopieren ohne VBA durchführen möchtest, kannst du Folgendes tun:

  1. Wähle den Bereich A1:C10 aus.
  2. Klicke mit der rechten Maustaste und wähle "Kopieren".
  3. Gehe zu Zelle B1, klicke mit der rechten Maustaste und wähle "Einfügen".
  4. Wiederhole den Vorgang für die nächsten Spalten.

Praktische Beispiele

Angenommen, du hast folgende Daten in den Zellen A1:C10:

A (Aktuell) B (Rest) C (Vergangenheit)
100 90 80
150 140 130

Nach dem Ausführen des Makros wird der Bereich wie folgt aussehen:

B (Aktuell) C (Rest) D (Vergangenheit)
100 90 80
150 140 130

Tipps für Profis

  • Teste deinen VBA-Code immer in einer Kopie deiner Arbeitsmappe, um unerwünschte Datenverluste zu vermeiden.
  • Nutze Option Explicit am Anfang deines Codes, um sicherzustellen, dass alle Variablen deklariert werden.
  • Wenn du regelmäßig diese Operation durchführst, kannst du eine Schaltfläche in Excel hinzufügen, um das Makro mit einem Klick auszuführen.

FAQ: Häufige Fragen

1. Kann ich diesen VBA-Code in anderen Excel-Versionen verwenden? Ja, der Code funktioniert in den meisten modernen Excel-Versionen, solange du Zugriff auf den VBA-Editor hast.

2. Was passiert, wenn der Zielbereich bereits Daten enthält? Der vorhandene Inhalt im Zielbereich wird überschrieben, wenn du den Kopiervorgang durchführst. Stelle sicher, dass du vorher eine Sicherung machst.

3. Wie kann ich den Bereich anpassen, den ich kopieren möchte? Du kannst die Zeilen- und Spaltenangaben im Code ändern, um den gewünschten Bereich anzupassen. Achte darauf, dass die Logik des Codes beibehalten wird.

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