Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Excel VBA Zellformat beim kopieren übernehmen
#1
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!
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#2
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
[-] Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:
  • sharky51
Antworten Top
#3
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!
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#4
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.
[-] Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:
  • sharky51
Antworten Top
#5
Hallo,

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

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • sharky51
Antworten Top
#6
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.
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#7
(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
Antworten Top
#8
(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......
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#9
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
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#10
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.
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste