Clever-Excel-Forum

Normale Version: Excel VBA Zellformat beim kopieren übernehmen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

zunächst wünsche ich allen ein gutes neues Jahr.

Nun... ich verwende ein tolles Makro für das verschieben von Spalten.
Leider wird die Formatierung der Zellen beim verschieben nicht übernommen.
Deshalb meine Frage an Euch ob Ihr mir zeigen könnt was an dem Makro zu ändern wäre um nicht nur die Werte zu verschieben sondern auch die Formatierung zu übernehmen.

Code:
'Markierte Spalte nach rechts verschieben
Sub SwitchColumns_Rechts()
 Dim rgSelected As Range
 Dim rgNextColumn As Range
 Dim TempArray
 
 On Error GoTo Switch_Error
 
 If Selection.Columns.Count > 1 Or _
   Selection.Areas.Count > 1 Then
   MsgBox "Die Markierung darf nur aus " & "einer Spalte bestehen und sie muss zusammenhängend sein!"
 Else
   Set rgSelected = Intersect(Selection, ActiveSheet.UsedRange)
   Set rgNextColumn = rgSelected.Offset(0, 1)
   TempArray = rgSelected.Formula
   rgSelected.Formula = rgNextColumn.Formula
   rgNextColumn.Formula = TempArray
 End If
 
Switch_End:
 Set rgNextColumn = Nothing
 Set rgSelected = Nothing
 Exit Sub
 
Switch_Error:
 MsgBox "Fehler beim Spaltentauch!" & _
   "Fehernr. " & Err.Number & ":" & vbCr & _
   Err.Description
 Resume Switch_End
End Sub

Vielen Dank für Eure Hilfe!
Hi,

(07.01.2016, 15:24)sharky51 schrieb: [ -> ]Deshalb meine Frage an Euch ob Ihr mir zeigen könnt was an dem Makro zu ändern wäre um nicht nur die Werte zu verschieben sondern auch die Formatierung zu übernehmen.

versuche mal:
Code:
rgSelected.copy rgNextColumn

statt
Code:
rgSelected.Formula = rgNextColumn.Formula
Hallo Ralf,

das mit der Übernahme der Formatierung funktioniert...die zu kopierende Spalte wird in die nächste Spalte nach rechts kopiert (mit Formaten).
Das Ziel des Makros ist aber die Spalten zu vertauschen und das funktioniert nun nicht mehr...also z.B. Werte in Spalte A nach Spalte B kopieren und die ursprünglichen Werte in Spalte B dann in Spalte A
schieben..aber alles ohne Formatverlust.

Vielleicht hast Du noch ne Idee wie man das bewerkstelligen kann?

Danke!
Hi,

(07.01.2016, 20:43)sharky51 schrieb: [ -> ]Das Ziel des Makros ist aber die Spalten zu vertauschen und das funktioniert nun nicht mehr...also z.B. Werte in Spalte A nach Spalte B kopieren und die ursprünglichen Werte in Spalte B dann in Spalte A
schieben..aber alles ohne Formatverlust.

dann kopierst Du Spalte A nach Spalte C, Spalte B nach A, Spalte C nach B und dann löschst Du Spalte C.
Hallo,

Spalten verschiebe/tausche ich einfach mit gedrückter Shifttaste.

Gruß Uwe
Hallo Ralf & Uwe,

danke für die Rückmeldung.

Manuell möchte ich das wegen der großen Anzahl der zu vertauschenden Spalten nicht tun.
Und die hin- und her-kopiererei gefällt mir nicht so richtig bei der größeren Anzahl der zu vertauschenden Spalten.

Warum stehen die Spalten nicht gleich an der richtigen Stelle? Die Frage ist berechtigt.
Ganz einfach, ich bekomme Datenreihen in csv-Format die immer unterschiedlich aufgebaut sind die ich dann in einer gewissen Form für Auswertungen benötige.

Mit meinem gezeigten Makro habe ich ja bereits eine funktionierende Lösung....es fehlt halt nur jeweils die richtige Formatierung beim Spalten drehen.

Nun ja, vielen Dank für Euren Beitrag.
(07.01.2016, 22:25)sharky51 schrieb: [ -> ]Mit meinem gezeigten Makro habe ich ja bereits eine funktionierende Lösung....

Hallo Erich,

Dein Makro bearbeitet doch auch nur eine Spalte, die zuvor markiert werden muss.!?

Gruß Uwe
(07.01.2016, 22:35)Kuwer schrieb: [ -> ]Hallo Erich,

Dein Makro bearbeitet doch auch nur eine Spalte, die zuvor markiert werden muss.!?

Gruß Uwe

Hallo Uwe,

ja das ist schon richtig....bin ja auch erst am Anfang meiner VBA-Exkursion. Wenn ich das aber mit der Formatierung nicht hinbekomme wird es übel... d.h. aufwändig...
Würde das gerne zuerst abarbeiten......
Hallo Erich,

wenn ich das "Vertauschen" von zwei Spalten aufzeichne, bekomme ich das:
Code:
Columns("O:O").Select
    Selection.Cut
    Columns("M:M").Select
    Selection.Insert Shift:=xlToRight

Statt ganzer Spalten gehen auch Bereiche. Codeoptimiert würde das so aussehen:
Code:
Range("O4:O6").Cut
    Range("M1").Insert Shift:=xlToRight

oder wenn Du unbedingt eine Selection verschieben willst:
Code:
Selection.Cut
    Range("M1").Insert Shift:=xlToRight
Hallo André,

danke für den Vorschlag.

Aber hier wir doch nichts vertauscht..oder?
Du schneidest einen Quell-Bereich aus und fügst ihn an einem anderen Ziel-Ort wieder ein, der Ziel-Ort wird überschrieben.
Aber der Inhalt vom Ziel-Ort soll nicht verloren gehen sondern gleichzeitig in Quell-Bereich eingefügt werden.

Das funktioniert ja auch bereits mit meinem Makro...mir geht es aber darum beim vertauschen der Werte auch die Formatierung mit zu vertauschen.
Z.B., im Quell-Bereich steht ein Datum, im Ziel-Ort steht eine Dezimalzahl...und die Zellen haben ursprünglich natürlich die richtige Formatierung.
Nachdem Vertauschen soll das natürlich auch so sein damit die Werte richtig angezeigt werden.
Seiten: 1 2