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

Forumthread: Zeilen tauschen

Zeilen tauschen
26.09.2008 16:04:58
amina
Hallo,
ich möchte Zellen mit Inhalt tauschen mit doppelklick auf z.B. A1
Also wenn ich auf A1 doppelklicke dann sollen die Zeilen A und B vertauscht werden. A = B und B = A.
Mit dem ganzen Inhalt und Formatierungen. Und wenn ich dann auf B1 doppelklicke (was ja vorher A1 war) dann soll dass wieder rückgängig gemacht werden.
Gibt es eine Möglichkeit mit VBA?
Gruß amina
Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen tauschen
26.09.2008 16:28:00
Manfred
Hi,
wenn das einen ernstzunehmenden Grund hat, dann bitte welchen?
mfg Manfred
AW: Zeilen tauschen
26.09.2008 17:30:00
amina
Jap hat einen ernstzunehmenden Grund aber viel zu kompliziert um zu erklären wieso und weshalb.
AW: Zeilen tauschen
26.09.2008 21:43:23
Uwe
Hi amina,
ich bekomme das nur mit einer Hilfzelle hin (X1). Die kanns Du, wenn es sein muss in eine andere (versteckte) Tabelle verlegen.
Dann lautet der Code so:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column > 2 Or Target.Count > 1 Then Exit Sub
If Target.Column = 1 Then
Target.Copy Range("X1")
Target.Offset(0, 1).Copy Target
Range("X1").Copy Target.Offset(0, 1)
ElseIf Target.Column = 2 Then
Target.Copy Range("X1")
Target.Offset(0, -1).Copy Target
Range("X1").Copy Target.Offset(0, -1)
End If
End Sub


Das gehört ins Klassenmodul des Tabellenblattes. Da Du VBA nein angibst hier das Vorgehen:
Das Tabellenblatt wo es passieren soll öffnen.
Auf die Lasche des Tabellenblattes (z.B. Tabelle1) rechtsklicken und Code anzeigen anklicken.
Es öffnet sich der VBA Editor.
Oben in der Mitte steht (Allgemein), das runterklappen und Worksheet auswählen
Rechts daneben steht jetzt Selection change (Die neuen Zeilen darunter ignorier erst mal)
SelectionChange klappst Du auch runter und wählst Before Double Click aus.
Jetzt steht direkt darunter:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
End Sub
In den Zwischenraum zwischen diesen beiden Zeilen muss mein Code (da diese Zeilen in meinem Code schon enthalten sind muss Du nur den Teil dazwischen rauskopieren).
Jetzt kannst Du den Editor wieder schließen.
Bei Doppelklick auf eine einzelne Zelle in Spalte A wird jetzt diese in die danebenligende Zelle in Spalte B kopiert und die Zelle in Spalte B nach A. Bei doppelklick in Spalte B wird mit A getauscht.
Eventuell muss das ganze angepasst werden. Versuchs vielleicht selber (Target.Coloumn=1 ist Spalte, =2 Spalte B, die erste Zeile anzupassen ist vielleich etwas schwieriger) oder melde Dich nochmal hier. Ich schaue wahrscheinlich morgen wieder rein, aber vielleicht hilft Dir auch ein ander aus dem Forum.
Gruß
Uwe
(:o)

Anzeige
AW: Zeilen tauschen
27.09.2008 10:50:00
amina
Hallo Uwe,
vielen Dank für die nette Information. Hab des mal ausprobiert und für den Anfang sieht es gut aus.
Das Problem ist aber dass ich eine Mappe habe, und in bestimmten Zeilen sind Formeln drinnen, diese Zeilen haben einen Blattschutz damit man nicht versehentlich die Formeln zerstört.
Hab mal dein Beispiel ausprobiert, nur funktioniert des nicht mit den Zeilen tauschen wenn ein Blattschutz drauf ist.
Trotzdem danke.
Gruß amina
Anzeige
AW: Zeilen tauschen
27.09.2008 14:21:00
Daniel
Hi
wenn das Blatt geschützt ist, kann das Makro auch nichts verändern.
aber das Makro kann den Blattschutz aufheben, seine Aktion durchführen und dann den Schutz wieder aktvieren.
daszu müsstest du folgenden Code am Anfang bzw am Ende in den Code einbauen:
Activesheet.UnProtect Password:= "DeinPassword"
Activesheet.Protect Password:="DeinPassword"
allerdings glaube ich nicht, daß es funktioniert, per Doppelklick auf Spalte B von B nach A zurückzutauschen, da das Makro ja nicht wissen kannst, ob du jetzt B mit C oder B mit A tauschen willst. du musst dich schon für eine Tauschrichtung entscheiden (dh entweder Tauschen mit Links von angeklicker oder tauschen mit rechst von angeklicketer)
es seiden , das ganze beschränkt sich wirklich nur auf Spalte A und B (was ich mir aber nicht so ganz vorstellen kann)
hier mal ein Makro
durch Doppelklick in Zeile 1 wird die angeklicke Spalte mit der Spalte rechts daneben getauscht.
zum Zurücktauschen musst du auf die gleiche Spalte klicken.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Row = 1 Then ' nur bei Klick auf Reihe 1
'ActiveSheet.Unprotect Password:=""
With Target
.EntireColumn.Cut
.Offset(0, 2).Insert shift:=xlToRight
End With
'ActiveSheet.Protect Password:=""
Cancel = True
End If
End Sub


Gruß, Daniel

Anzeige
AW: Zeilen tauschen
27.09.2008 19:01:46
amina
Hallo,
wie veränder ich das ganze auf einer Zeile? Also Zeile 1 und 2 anstatt die Spalten ?
Gruß amina
AW: Zeilen tauschen
28.09.2008 16:00:49
Daniel
Hi
in dem du im Code:
- Column(s) durch Row(s) ersetzt
- dito EntireColumn durch EntireRow
- in den Parametern zu .OFFSET() die Werte tauschst (aus (0,2) wird (2,0))
- aus dem Parameter "xlToLeft" "xlDown" machst
Gruß, Daniel
Anzeige
AW: Zeilen tauschen
28.09.2008 18:29:00
amina
Hallo Daniel,
vielen Dank für die Information, bekomm des auch irgendwie hin aber nicht so richtig.
Mit dem Code werden nur A1 mit A2 getauscht und umgekehrt...
Bräuchte aber den Tausch zwischen C10:AO10 und C12:AO12, mit Inhalt (Formeln und Formatierungen).
Gruß amina
AW: Zeilen tauschen
28.09.2008 19:21:24
Lars
Hi,
ist es wirklich so schwer, den sachverhalt gleich in der ersten Frage genau zu beschreiben?
Was genau soll denn nun getauscht werden, der gesamte bereich oder die einzelnen zellpaare in diesem bereich?
mfg Lars
Anzeige
der gesamte Bereich.
28.09.2008 19:46:49
amina
Der gesamte Bereich C10 bis AO10 soll mit C12 bis AO12 getauscht werden.
AW: der gesamte Bereich.
28.09.2008 23:48:06
Daniel
Das hat aber nun mal gar nichts mit der Ausgangsfrage zu tun.
irgendwie macht das so keinen Spass.
so sollte dein Wunsch funktionieren:
Range("C10:AO10").Copy
Range("C12:AO12").Insert Shift:=xlDown
Range("C13:AO13").Cut Range("C10:AO10")
Gruß, Daniel
Anzeige
mit beispiel Datei
29.09.2008 19:24:00
amina
Hallo nochmal, hier mal eine Beispiel Datei wie und was ich überhaupt gemeint hab mit den Zeilen tauschen,
hoffentlich kann mir jetzt jemand helfen bzw. Rat geben.
https://www.herber.de/bbs/user/55708.xls
Gruß Amina
AW: mit beispiel Datei
29.09.2008 22:43:46
Daniel
Hi
was hat den das mit Tauschen zu tun?
verwende doch einfach folgende Formel in den Zellen (Formel geschreiben für Zelle H10)

=wenn($A10 = "a";test!k$8;"")


und kopiere diese Formel in die Zellen H10:AL10 und H12:AL12 und gut ist. (für Zeile 14 und 16 musst du halt noch 8 auf 9 ändern).
aufwendig tauschen ist da nicht notwendig, geht doch einfach mit Formel, sollte bei Excel-Gut doch kein Problem sein.
Gruß, Daniel

Anzeige
AW: mit beispiel Datei
30.09.2008 04:28:00
amina
Klar geht das mit Formeln, nur sind da eben Formeln auf den Zellen, die soll doch keiner sehen oder bearbeiten.
Und das hat was mit tauschen zu tun...werd mal versuchen den Code da mit einzubringen. Vielleicht klappt es ja.
Dein wenn Beispiiel ist ok, hab des ausprobiert allerdings wie gesagt sind die Formeln drinnen und sichtbar.
Der Bereich der grau markiert ist hat Formeln und ist dazu noch Schreibgeschützt.
Trotzdem Danke Daniel. Gruß amina
Anzeige
AW: mit beispiel Datei
02.10.2008 18:57:00
amina
Hallöchen,
hab jetzt mal das ganze mit der Formel und Makros ausprobiert, funktioniert - allerdings viel zu viele Umwege.
Kann ich die wenn Formel in das Makro mit einbeziehen? Also wenn ich auf den Button klicke und die Zeilen grau markiert werden sollen dann die Sachen drinstehen. Das mit Makro ohne Formeln irgendwie
?
Gruß amina
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
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 tauschen in Excel


Schritt-für-Schritt-Anleitung

Um in Excel Zeilen miteinander zu tauschen, kannst Du ein einfaches VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne das Excel-Dokument, in dem Du die Zeilen tauschen möchtest.

  2. Klicke mit der rechten Maustaste auf den Tab des Arbeitsblattes, in dem Du arbeiten willst, und wähle „Code anzeigen“.

  3. Es öffnet sich der VBA-Editor. Wähle im Dropdown-Menü oben „Worksheet“ aus.

  4. Wähle „Before Double Click“ aus dem Dropdown-Menü daneben.

  5. Füge den folgenden Code in das Fenster ein:

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Row > 1 Or Target.Count > 1 Then Exit Sub
    If Target.Row = 1 Then
       Target.Copy Range("X1")
       Target.Offset(1, 0).Copy Target
       Range("X1").Copy Target.Offset(1, 0)
    ElseIf Target.Row = 2 Then
       Target.Copy Range("X1")
       Target.Offset(-1, 0).Copy Target
       Range("X1").Copy Target.Offset(-1, 0)
    End If
    End Sub
  6. Schließe den VBA-Editor und teste den Doppelklick auf die Zeilen 1 und 2.


Häufige Fehler und Lösungen

  • Blattschutz verhindert Tausch: Wenn der Blattschutz aktiv ist, kann das Makro keine Änderungen vornehmen. Du kannst den Schutz mit den folgenden Zeilen im Code aufheben und nach dem Tausch wieder aktivieren:

    ActiveSheet.Unprotect Password:="DeinPassword"
    ActiveSheet.Protect Password:="DeinPassword"
  • Funktioniert nur für eine Zeile: Wenn Du nur eine Zeile tauschen kannst, überprüfe, ob Du den richtigen Code für das Zeilen tauschen in Excel eingefügt hast und ob die Zeilen korrekt referenziert sind.


Alternative Methoden

Wenn Du keinen VBA-Code verwenden möchtest, kannst Du auch folgende Methoden ausprobieren:

  1. Manuelles Kopieren und Einfügen: Markiere die Zeilen, die Du vertauschen möchtest, kopiere sie und füge sie an der gewünschten Stelle ein. Diese Methode ist einfach, aber weniger effizient für große Datenmengen.

  2. Formeln verwenden: Wenn Du Daten in bestimmten Zellen hast, kannst Du Formeln nutzen, um die Werte zu tauschen, z.B. mit WENN-Formeln.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du in Excel zwei Zeilen tauschen kannst:

  • Zwei Zeilen vertauschen: Um die Inhalte von C10 bis AO10 mit C12 bis AO12 zu tauschen, kannst Du folgenden Code verwenden:

    Range("C10:AO10").Copy
    Range("C12:AO12").Insert Shift:=xlDown
    Range("C13:AO13").Cut Range("C10:AO10")
  • Zeilen tauschen mit Formeln: Wenn in den Zellen Formeln vorhanden sind, achte darauf, dass Du den Inhalt so tauschst, dass die Formeln nicht überschrieben werden.


Tipps für Profis

  • Tastenkombinationen: Du kannst auch eine Tastenkombination für das Makro erstellen, um das Zeilen tauschen in Excel zu erleichtern. Gehe dazu in den VBA-Editor und füge eine Application.OnKey-Anweisung hinzu.

  • Versteckte Zellen: Wenn Du Zellen hast, die nicht sichtbar sein sollen, kannst Du sie vor dem Tausch ausblenden.


FAQ: Häufige Fragen

1. Wie kann ich zwei Zellen in Excel tauschen?
Du kannst den gleichen VBA-Code verwenden, um zwei Zellen zu tauschen. Ändere einfach die Referenzen im Code von „Row“ zu „Column“.

2. Funktioniert das Tauschverfahren in jeder Excel-Version?
Ja, die meisten VBA-Codes und Methoden zum Zeilen tauschen funktionieren in den neueren Versionen von Excel. Stelle sicher, dass Du VBA aktivieren kannst.

3. Was passiert mit den Formeln, wenn ich Zeilen tausche?
Wenn Du Zeilen mit Formeln tauscht, werden die Formeln ebenfalls in die neuen Zeilen eingefügt, sofern Du die Zellen kopierst. Achte darauf, dass die Zellreferenzen nicht beschädigt werden.

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