Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1012to1016
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

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

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
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
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
Anzeige
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
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
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
Anzeige
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

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige