Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeilen in Tabelle verschieben mit VBA

Zeilen in Tabelle verschieben mit VBA
03.09.2020 11:37:44
Roman
Hallo Zusammen,
verwende folgendes Makro, um die Zeilen in einer Tabelle nach oben oder unten zu verschieben, ohne dabei andere Einträge zu löschen (weiß aber nicht, ob das der perfekte Code ist).
Das Problem ist, dass wenn ich die erste oder letzte Zeile verschieben möchte bzw. ausversehen versuche zu verschieben, kommt eine Fehlermeldung. Jetzt müsste in meinem Code der Anfang und das Ende der Tabelle definiert werden, denke irgendwas mit .End(xlUp) usw. Hier bin überfragt.
Hoffe, jemand von euch kann mir weiterhelfen und den Code vielleicht sogar optimieren, wenn etwas an ihm nicht passen sollte.
Danke im Voraus
Sub MoveDown()
Application.EnableEvents = False
Application.ScreenUpdating = False
Range(ActiveCell.Row + 1 & ":" & ActiveCell.Row + 1).Cut 'Cut row below
ActiveCell.EntireRow.Insert Shift:=xlDown 'Paste
ActiveCell.Offset(1, 0).Select 'Move down to it
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Sub MoveUp()
Application.EnableEvents = False
Application.ScreenUpdating = False
If ActiveCell.Row > 1 Then
Range(ActiveCell.Row & ":" & ActiveCell.Row).Cut 'Cut active row
ActiveCell.Offset(-1, 0).Select 'Move up a row
ActiveCell.EntireRow.Insert Shift:=xlDown 'Paste
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen in Tabelle verschieben mit VBA
04.09.2020 09:24:53
Roman
Habe einen Fehler im Text. Wenn ich die letzte Zeile mit dem Makro verschiebe, wird die Tabelle einfach erweitert. Das soll verhindert werden.
Wenn ich die erste Zeile versuche nach oben zu verschieben, kommt eine Fehlermeldung (logisch, da ja versucht wird die Überschriften auszuschneiden)
Da meine Tabelle nummeriert ist, habe ich schon überlegt, den Wert der ersten Spalte von der nächsten Zeile abzufragen, ob dieser leer ist oder nicht. Und falls er leer ist, dass das Sub beendet wird. Komme aber mit meinem Halbwissen leider nicht weiter.
Anzeige
AW: Zeilen in Tabelle verschieben mit VBA
04.09.2020 16:20:11
ChrisL
Hi
Wenn ich die erste Zeile versuche nach oben zu verschieben, kommt eine Fehlermeldung (logisch, da ja versucht wird die Überschriften auszuschneiden)
Die Aussage stimmt m.E. nicht, weil dies mit folgender Zeile bereits abgefangen wird:
If ActiveCell.Row > 1 Then
Dasselbe in Grün für MoveDown:
If ActiveCell.Row 
cu
Chris
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeilen in Excel-Tabelle verschieben mit VBA


Schritt-für-Schritt-Anleitung

Um Zeilen in Deiner Excel-Tabelle mit VBA zu verschieben, kannst Du die folgenden Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Erstelle ein neues Modul: Klicke im Menü auf "Einfügen" und wähle "Modul".

  3. Füge den Code ein: Kopiere und füge den folgenden Code in das Modul ein:

    Sub MoveDown()
       Application.EnableEvents = False
       Application.ScreenUpdating = False
       Range(ActiveCell.Row + 1 & ":" & ActiveCell.Row + 1).Cut 'Cut row below
       ActiveCell.EntireRow.Insert Shift:=xlDown 'Paste
       ActiveCell.Offset(1, 0).Select 'Move down to it
       Application.EnableEvents = True
       Application.ScreenUpdating = True
    End Sub
    
    Sub MoveUp()
       Application.EnableEvents = False
       Application.ScreenUpdating = False
       If ActiveCell.Row > 1 Then
           Range(ActiveCell.Row & ":" & ActiveCell.Row).Cut 'Cut active row
           ActiveCell.Offset(-1, 0).Select 'Move up a row
           ActiveCell.EntireRow.Insert Shift:=xlDown 'Paste
       End If
       Application.EnableEvents = True
       Application.ScreenUpdating = True
    End Sub
  4. Schließe den VBA-Editor: Speichere Deine Änderungen und schließe den Editor.

  5. Führe das Makro aus: Wähle eine Zelle in der Zeile aus, die Du verschieben möchtest, und führe das Makro mit ALT + F8 aus.


Häufige Fehler und Lösungen

  • Fehlermeldung beim Verschieben der ersten oder letzten Zeile: Wenn Du versuchst, die erste Zeile (z.B. Überschriften) nach oben zu verschieben, tritt eine Fehlermeldung auf. Um dies zu vermeiden, stelle sicher, dass der Code die erste Zeile überprüft. Der Code enthält bereits diese Überprüfung, aber achte darauf, dass Du nicht versuchst, die letzte Zeile zu verschieben, da dies die Tabelle erweitern könnte.

  • Tabelle erweitert sich beim Verschieben der letzten Zeile: Um dies zu verhindern, solltest Du im Code überprüfen, ob die letzte Zeile verschoben wird und entsprechend eine Abbruchbedingung hinzufügen.


Alternative Methoden

Eine einfache Möglichkeit, Zeilen in einer Excel-Tabelle zu verschieben, ist die Verwendung von Drag-and-Drop:

  1. Wähle die Zeile aus: Klicke auf die Zeilennummer, um die gesamte Zeile auszuwählen.
  2. Halte die Shift-Taste gedrückt: Klicke und ziehe die Zeile an die gewünschte Position.
  3. Lass die Maustaste los: Die Zeile wird an der neuen Position eingefügt.

Praktische Beispiele

  • Beispiel 1: Wenn Du eine Excel-Tabelle hast, in der die Zeilen nach Priorität sortiert sind, kannst Du die Funktion MoveUp verwenden, um eine höhere Priorität nach oben zu verschieben.

  • Beispiel 2: Bei der Bearbeitung von Pivot-Tabellen kannst Du die Funktion MoveDown verwenden, um Daten in Deiner Pivot-Tabelle neu anzuordnen.


Tipps für Profis

  • Sichere Deine Daten: Vor dem Ausführen von VBA-Makros solltest Du immer eine Sicherungskopie Deiner Excel-Datei erstellen.
  • Verwende Namen für Bereiche: Anstatt sich auf Zeilen- und Spaltennummern zu verlassen, kannst Du benannte Bereiche verwenden, um das Verschieben von Zeilen dynamischer zu gestalten.
  • Optimierung des Codes: Achte darauf, dass Du den Code regelmäßig überprüfst und optimierst, um die Leistung zu verbessern. Verwende Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Zeilen gleichzeitig verschieben?
Du kannst mehrere Zeilen auswählen und das Makro ausführen. Der Code muss jedoch möglicherweise angepasst werden, um mehrere Zeilen korrekt zu behandeln.

2. Funktioniert dieser Code in Excel 365?
Ja, der bereitgestellte VBA-Code funktioniert in Excel 365 sowie in anderen Versionen von Excel, die VBA unterstützen.

3. Gibt es eine Möglichkeit, Zeilen in Word zu verschieben?
Ja, Du kannst Tabellen in Word ebenfalls verschieben. Hierbei musst Du jedoch die entsprechenden Word-spezifischen Befehle verwenden, wie Tabelle verschieben oder Zeilen tauschen.

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