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

Forumthread: Hintergrundfarbe per Makro kopieren

Hintergrundfarbe per Makro kopieren
20.02.2018 10:54:34
Nicolai
Hallo zusammen,
ich habe in einer Zelle eine bedingte Formatierung die bei verschiedenen Kriterien verschiedene Hintergrundfarben festlegt.
Nun möchte ich per Makro den Zellinhalt inkl. Hintergrundfarbe(ohne bedingte Formatierung) in eine andere Zelle kopieren. Im Internet habe ich leider kein passendes Makro gefunden.
Wäre super wenn ihr mit helfen könnt.
Vielen dank vorab.
Nicolai
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Hintergrundfarbe per Makro kopieren
20.02.2018 11:27:09
Burak
Hallo Nicolai,
Vllt hilft dir das hier weiter
Sub test()
Dim r, r1 As Range
Set r = Sheets("Tabelle1").Range("A1")
Set r1 = Sheets("Tabelle3").Range("A1")
r.Copy
r1.PasteSpecial xlPasteValues   ' Kopiert den Wert
r1.PasteSpecial xlPasteFormats  ' Kopiert das Format (also auch die Farbe)
Application.CutCopyMode = xlCut
End Sub
Freundliche Grüße
Burak
Anzeige
da kopiesrt Du aber auch das bedingte Format
20.02.2018 11:47:51
Matthias
Hallo Burak
Wenn Du
r1.PasteSpecial xlPasteFormats benutzt wird aber auch die bedingte Formtierung ins Ziel übertragen
Das wollte aber Nicolai eben nicht
Nun möchte ich per Makro den Zellinhalt inkl. Hintergrundfarbe(ohne bedingte Formatierung) in eine andere Zelle kopieren.
Gruß Matthias
Anzeige
AW: da kopiesrt Du aber auch das bedingte Format
20.02.2018 12:44:22
Burak
achso, also nur die Farbe, ohne die restliche Formatierung?
Dim a
a = Range("E1").Interior.ColorIndex
Cells(1, 1).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ColorIndex = a
.TintAndShade = 0
.PatternTintAndShade = 0
End With 
Kopiert die Farbe aus E1 zu A1 selbes Tabellenblatt
Anzeige
einfachere Variante wäre...
20.02.2018 12:53:16
Burak

ActiveCell.Interior.Color = Range("A1").Interior.Color
Kopiert in die zuvor ausgewählte Zelle die Farbe von Zelle A1
AW: einfachere Variante wäre...
21.02.2018 09:46:15
Nicolai
Hallo Burak,
die einfache Variante geht leider nicht so einfach weil ich es von Tabelle A in Tabelle B kopiere.
Ich glaub ich hätte mich bester ausdrücken müssen, sorry.
Den Zellinhalt kopiere ich bereits so, nun möchte ich aber das auch die Hintergrundfarbe mit kopiert wird (ohne bedingte Formatierung).
Vielen Dank & Grüße,
Nicolai

Windows("TabelleA.xlsm").Activate
Range("B1:B2").Select
Selection.Copy
Windows("TabelleB.xlsm").Activate
Range("B2:B3").Select
Selection.PasteSpecial Paste:=xlPasteValues

Anzeige
AW: einfachere Variante wäre...
21.02.2018 15:42:48
Nicolai
Hallo zusammen,
leider steh ich irgendwie auf dem Schlauch und ich bekomme es nicht eingebaut/umgebaut.
Vielleicht kann mir nochmal jemand helfen.
Vielen Dank & Grüße,
Nicolai
AW: einfachere Variante wäre...
22.02.2018 07:01:41
Burak
so langsam kommen wir deinen Wünschen näher.
Also gehe ich davon aus dass bei beiden Dateien, die Zellen sich im Tabellenblatt "Tabelle1" befindet.
Sub kopieren()
Dim i As Long
For i = 1 To 2
Workbooks("TabelleA.xlsm").Worksheets("Tabelle1").Range("B" & i).Copy
With Workbooks("TabelleB.xlsm").Worksheets("Tabelle1").Range("B" & i + 1)
.PasteSpecial Paste:=xlValues           ' Werte
'.PasteSpecial Paste:=xlFormats          ' Formate
.Interior.Color = Workbooks("TabelleA.xlsm").Worksheets("Tabelle1").Range("B" & i).Interior. _
Color 'Farbe
End With
Next i
Application.CutCopyMode = False
End Sub
Mit
.PasteSpecial Paste:=xlValues
werden Werte kopiert.
Mit
.PasteSpecial Paste:=xlFormats
Formate (was du ja nicht möchtest).
und mit
.Interior.Color = Workbooks("TabelleA.xlsm").Worksheets("Tabelle1").Range("B1:B2").Interior.Color
die Farbe ohne restliche Formate (Fettdruck, etc).
Hoffe das entspricht deinen Vorstellungen.
Anzeige
etwas performanter
22.02.2018 07:21:59
Burak
Ein kleines bisschen performanter:
Sub kopieren()
Dim i As Long
Workbooks("TabelleA.xlsm").Worksheets("Tabelle1").Range("B1:B2").Copy
With Workbooks("TabelleB.xlsm").Worksheets("Tabelle1").Range("B2:B3")
.PasteSpecial Paste:=xlValues           ' Werte
End With
Application.CutCopyMode = False
For i = 1 To 2
With Workbooks("TabelleB.xlsm").Worksheets("Tabelle1").Range("B" & i + 1)
.Interior.Color = Workbooks("TabelleA.xlsm").Worksheets("Tabelle1").Range("B" & i).Interior.  _
_
Color 'Farbe
End With
Next i
End Sub
Die Schleife fürs Kopieren der Farbe ist nötig, da merkwürdigerweise statt der korrekten Farbe nur schwarze Hintergrundfarbe gesetzt wird, wenn die Farbkopie sich auf einen Bereich, statt eine Zelle bezieht. Daher wird hier der Wert aus dem ganzen Bereich kopiert aber die Farbe Zelle für Zelle.
Freundliche Grüße
Anzeige
AW: etwas performanter
22.02.2018 11:29:25
Nicolai
Hallo Burak,
vielen dank für die ausführliche Antwort.
Leider funktioniert es irgendwie nicht, aus diesem Grund habe mach eine Beispieldatei gebastelt.
https://www.herber.de/bbs/user/119988.xlsm
Ich möchte eigentlich den Bereich B1:G10 kopieren und in der anderen Tabelle in B2:G11 einfügen.
In der Datei habe ich es erstmal nur mit einem kleinen Bereich probiert, was leider auch nicht geklappt hat.
Wäre super wenn du mir helfen könntest.
Viele Grüße und Danke,
Nicolai
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Hintergrundfarbe per Makro kopieren in Excel


Schritt-für-Schritt-Anleitung

Um die Hintergrundfarbe einer Zelle in Excel per Makro zu kopieren, kannst du folgendes VBA-Skript verwenden. Dieses Skript kopiert die Farbe ohne die bedingte Formatierung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code ein:
Sub kopieren()
    Dim i As Long
    Workbooks("TabelleA.xlsm").Worksheets("Tabelle1").Range("B1:B2").Copy
    With Workbooks("TabelleB.xlsm").Worksheets("Tabelle1").Range("B2:B3")
        .PasteSpecial Paste:=xlValues           ' Werte kopieren
    End With
    Application.CutCopyMode = False
    For i = 1 To 2
        With Workbooks("TabelleB.xlsm").Worksheets("Tabelle1").Range("B" & i + 1)
            .Interior.Color = Workbooks("TabelleA.xlsm").Worksheets("Tabelle1").Range("B" & i).Interior.Color ' Farbe übernehmen
        End With
    Next i
End Sub
  1. Passe die Namen der Arbeitsmappen und -blätter nach Bedarf an.
  2. Schließe den VBA-Editor und führe das Makro aus.

Häufige Fehler und Lösungen

  • Fehler: Die Farbe wird nicht richtig kopiert.

    • Lösung: Stelle sicher, dass du die richtige Range angibst und dass die Zellen im richtigen Format sind.
  • Fehler: Das Makro kopiert die bedingte Formatierung.

    • Lösung: Achte darauf, dass du .PasteSpecial Paste:=xlFormats nicht verwendest, wenn du nur die Farbe kopieren möchtest.

Alternative Methoden

Falls du die Excel-Füllfarbe von einer Zelle in eine andere übertragen möchtest, ohne ein Makro zu verwenden, kannst du auch folgende Schritte nutzen:

  1. Wähle die Zelle mit der gewünschten Farbe aus.
  2. Klicke auf den Farbpinsel in der Symbolleiste.
  3. Klicke auf die Zielzelle, um die Hintergrundfarbe zu übertragen.

Diese Methode ist einfach, benötigt jedoch manuelle Eingriffe und ist weniger effizient bei großen Datenmengen.


Praktische Beispiele

Hier sind einige Beispiele, wie du die Hintergrundfarbe aus einer anderen Zelle in eine neue Zelle oder einen Bereich kopieren kannst:

  • Um die Farbe von A1 nach B1 zu kopieren:
Sub FarbeKopieren()
    Range("B1").Interior.Color = Range("A1").Interior.Color
End Sub
  • Um die Farbe von einem Bereich B1:B10 nach C1:C10 zu kopieren:
Sub BereichFarbeKopieren()
    Dim i As Long
    For i = 1 To 10
        Cells(i, 3).Interior.Color = Cells(i, 2).Interior.Color
    Next i
End Sub

Tipps für Profis

  • Verwende ColorIndex anstelle von Color, wenn du nur die Farbnummer kopieren möchtest.
  • Experimentiere mit TintAndShade, um die Kopie der Farbe anzupassen.
  • Halte deine VBA-Module organisiert, indem du sinnvolle Namen für die Subroutinen wählst.

FAQ: Häufige Fragen

1. Wie kann ich die Farbe einer Zelle automatisch übernehmen?
Du kannst die Farbe einer Zelle automatisch übernehmen, indem du ein VBA-Makro erstellst, das die Eigentümerzelle referenziert und deren Farbe kopiert.

2. Funktioniert das auch in älteren Excel-Versionen?
Ja, das VBA-Skript sollte in den meisten Excel-Versionen funktionieren, solange die VBA-Unterstützung vorhanden ist. Achte darauf, die richtigen Referenzen zu verwenden.

3. Kann ich nur die Füllfarbe ohne andere Formatierungen kopieren?
Ja, durch die Verwendung von .Interior.Color in deinem Makro kannst du nur die Füllfarbe kopieren, ohne andere Zellformatierungen zu übernehmen.

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