Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1088to1092
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

Spalten tauschen

Spalten tauschen
Günter

Guten Abend,
habe von Euch (Sepp/Matthias) ein Makro (siehe unten), welches mir Spalten
komfortabel verschiebt.
Könnte mir jemand das Makro so umgestalten, dass das
Verschieben erst ab Zeile 2 passiert.
Schönen Gruß
https://www.herber.de/bbs/user/63466.xls

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Rückfrage
27.07.2009 19:15:29
Erich
Hi Günter,
wonach sollen sich dann die Spaltenbreiten richten?
Sollen die Spaltenbreiten (mit den Überschriften) unverändert bleiben
oder zusammen mit den Werten ab Zeile 2 "wandern"?
Mein Code für das Verschieben der kompletten Spalte sähe übrigens so aus:

Option Explicit
Sub SpalteTausch(nRechts As Boolean)
Dim lngSpalteVon As Integer, lngSpalteBis As Integer
Dim lngR As Long
Dim rng As Range, rngR As Range
Dim arr As Variant, sngBreit As Single
lngSpalteVon = 1
lngSpalteBis = 20
lngR = IIf(nRechts, 1, -1)
Set rng = ActiveSheet.UsedRange.Columns(ActiveCell.Column)
If lngSpalteVon 
Den Code kannst du ja vielleicht auch mal testen.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Rückfrage
27.07.2009 19:26:00
Günter
Hallo Erich,
danke erst mal.
Die Spaltenbreiten (mit den Überschriften) sollen unverändert bleiben.
Z.B., wenn ich die Spalte A markiere, soll immer nur ab Zeile 2 nach
rechts oder links verschoben werden. Die 1 (also die Überschrift soll
stehen bleiben).
Schönen Gruß
Günter
Spaltentausch ab Zeile 2
27.07.2009 19:58:54
Erich
Hi Günter,
probier mal

Option Explicit
Sub SpalteTauschAb2(nRechts As Boolean)
Dim lngSpalteVon As Integer, lngSpalteBis As Integer
Dim lngR As Long, lngC As Long, lngA As Long, lngB As Long
Dim rng As Range, rngR As Range, arr As Variant
lngSpalteVon = 1
lngSpalteBis = 20
lngR = IIf(nRechts, 1, -1)
If lngSpalteVon  lngB Then _
Cells(lngB + 1, lngC).Resize(lngA - lngB).ClearContents        ' Rest löschen
rng.Offset(, lngR) = arr                  ' gemerkte Werte in andere Spalte
If lngA 
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Spaltentausch ab Zeile 2
27.07.2009 20:02:19
Günter
Oh, sorry - zu schnell geschrieben....
AW: Spaltentausch ab Zeile 2
27.07.2009 20:13:41
Günter
Hallo Erich,
bekomme folgende Fehlermeldung (1004) bei der Zeile:
Set rngR = Cells(2, lngC + lngR).Resize(lngB - 1)
Klappt alles, wenn ab Zeile 2 in der Nachbarzelle Werte enthalten sind.
Sobald aber (wenn ich nach links schiebe) die Nachbarspalte (z.B. in diesem Falle die A2) leer ist,
die o.g. Fehlermeldung. Dies passiert auch, wenn ich nach rechts schiebe.
Gruß
Günter
Spaltentausch ab Zeile X
27.07.2009 20:22:55
Erich
Hi Günter,
sorry, den Fehler habe ich auch gerade bemerkt,
als ich versucht habe, die Anzahl Überschriftzeilen vorzugeben.
Hier eine neue Version:

Option Explicit
Sub SpalteTauschAb2(nRechts As Boolean)
Dim lngU As Long, lngSpalteVon As Long, lngSpalteBis As Long
Dim lngR As Long, lngC As Long, lngA As Long, lngB As Long
Dim rng As Range, rngR As Range, arr As Variant
lngU = 1                ' Anzahl Überschriftzeilen
lngSpalteVon = 1        ' linkeste  zulässige Spalte
lngSpalteBis = 20       ' rechteste zulässige Spalte
lngR = IIf(nRechts, 1, -1)
If lngSpalteVon  lngU Then
Set rng = Cells(lngU + 1, lngC).Resize(lngA - lngU)
arr = rng                                 ' Werte der aktuellen Spalte merken
End If
lngB = Cells(Rows.Count, lngC + lngR).End(xlUp).Row
If lngB > lngU Then
Set rngR = Cells(lngU + 1, lngC + lngR).Resize(lngB - lngU)
rngR.Offset(, -lngR) = rngR.Value         ' aktuelle Spalte überschreiben
End If
If lngA > lngB Then _
Cells(lngB + 1, lngC).Resize(lngA - lngB).ClearContents        ' Rest löschen
If Not rng Is Nothing Then _
rng.Offset(, lngR) = arr                  ' gemerkte Werte in andere Spalte
If lngA 
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Spaltentausch ab Zeile X
27.07.2009 20:31:00
Günter
Hallo Erich,
vielen vielen Dank.
Klappt jetzt vorbildlich.
Ich wünsche Dir und Deinen Mitstreitern einen schönen Abend.
Liebe Grüße aus dem verregneten Frankfurt(M).
Günter
AW: Rückfrage
27.07.2009 20:01:49
Günter
Hallo Erich,
es geht mir letztendlich darum, dass die ganze Spalte (welche ich vor markiert
habe) nach Bedarf nach links oder recht sich verschiebt, aber die 1.Zelle stehen
bleibt. Also genau das, was Dein Makro macht. Aber halt erst ab Zeile 2.
Gruß
Günter
AW: Rückfrage
27.07.2009 20:15:55
Günter
Sorry, wiederhole meine letzte Info.
Hallo Erich,
bekomme folgende Fehlermeldung (1004) bei der Zeile:
Set rngR = Cells(2, lngC + lngR).Resize(lngB - 1)
Klappt alles, wenn ab Zeile 2 in der Nachbarzelle Werte enthalten sind.
Sobald aber (wenn ich nach links schiebe) die Nachbarspalte (z.B. in diesem Falle die A2) leer ist,
die o.g. Fehlermeldung. Dies passiert auch, wenn ich nach rechts schiebe.
Gruß
Günter
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige