Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Formatierung aus Zelle auslesen

Formatierung aus Zelle auslesen
15.07.2021 10:54:45
Die
Hallo an einem endlich wieder etwas sonnigen Tag,
in einem Sheet wird viel mit bedingter Formatierung gearbeitet. Irgendwann habe ich alle Einstellungen in vba übernommen, das sieht dann bei mir so aus:
' Spalte B, C
Range("B11:C500").Select
Cells.FormatConditions.Delete
Range("B11:C500").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$CLB11=2"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = RGB(255, 125, 125)
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False

usw.
So werden dann alle bedingten Formatierungen gelöscht und neu geschrieben. Das klappt ganz gut, weil dadurch Kopierfehler etc. vermieden werden. So alle Monate setze ich Formatierungen wieder auf Standard zurück.
Jetzt habe ich eine Anwesenheits-Tabelle, bei der für eine bedingte Formatierung Schriftgröße, fett/kursiv/normal, Schriftfarbe und Ausfüllfarbe festgelegt werden. Die Bedingung ist erfüllt, wenn ein bestimmter Buchstabe in der Zelle steht. Trage ich ein 'U' (für Urlaub) ein, füllt sich die Zelle in grün, das U ist fett und etwas größer, bei 'B' (für z.B. Besprechung) in grau und normaler Größe etc. Das bekomme ich - hoffentlich - alleine hin.
Allerdings sollen diese Angaben nicht feststehen, sondern aus einer "Musterzelle" entnommen werden. Das Makro soll also aus einer Zelle 'Muster!A1' erkennen, dass das U-Feld künftig in Hell-Blau mit kleiner Schrift, aus 'Muster!A2', dass das A-Feld aber in Dunkelblau erscheinen usw.
Ich hoffe, ihr versteht, was ich meine. Der Hintergrund: Kollegen arbeiten in diversen Projekten, die unterschiedliche Aufmerksamkeiten erfordern. Da kam die Anforderung, die jeweils wichtigen Projekte entsprechend in Signalfarben markieren zu können. Es sind so ca. 15 Buchstaben, die vergeben werden können.
Herzlichen Dank für Input sagt
Die Johanna
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formatierung aus Zelle auslesen
15.07.2021 12:52:06
UweD
Hallo Johanna
in ein normales Modul...

Option Explicit
Public SchrGr, SchrFett, HFarbe, FForm
Sub BedForm_setzen()
' Spalte B, C
With Sheets("Tabelle1").Range("B11:C500")
.Cells.FormatConditions.Delete
FForm = 2
Call Form_Lesen
.FormatConditions.Add Type:=xlExpression, Formula1:="=$CLB11=" & FForm
.FormatConditions(.FormatConditions.Count).SetFirstPriority
With .FormatConditions(.FormatConditions.Count)
.Interior.Color = HFarbe
'.Font.Size = SchrGr 'nicht möglich
.Font.Bold = SchrFett
.StopIfTrue = False
End With
FForm = "U"
Call Form_Lesen
.FormatConditions.Add Type:=xlExpression, Formula1:="=$CLB11=" & FForm
.FormatConditions(.FormatConditions.Count).SetFirstPriority
With .FormatConditions(.FormatConditions.Count)
.Interior.Color = HFarbe
'.Font.Size = SchrGr 'nicht möglich
.Font.Bold = SchrFett
.StopIfTrue = False
End With
End With
End Sub
Private Sub Form_Lesen()
Dim TB2 As Worksheet, Zeile As Integer, RNG As Range
Set TB2 = Sheets("Muster")
If WorksheetFunction.CountIf(TB2.Columns(1), FForm) > 0 Then
Zeile = WorksheetFunction.Match(FForm, TB2.Columns(1), 0)
Set RNG = TB2.Cells(Zeile, 1)
SchrGr = RNG.Font.Size
HFarbe = RNG.Interior.Color
SchrFett = RNG.Font.Bold
Else
MsgBox "Für :'" & FForm & "' keine Formatierung gefunden"
End If
End Sub
Bei $CLB11= bin ich nicht sicher, ob du das wirklich so statisch auf die eine Zelle bezogen haben möchtest.
Aber diese Anfangslösung ist ja ausbaufähig...
LG UweD
Anzeige
AW: Formatierung aus Zelle auslesen
16.07.2021 09:30:05
Die
Hallo Uwe,
nach meiner blöden Formulierung zum testen mit dem daraus resultierenden Missverständnis (sorry) doch noch eine inhaltliche Frage:
Die Frage geht zur Textgröße: Änderungen in der Musterzelle haben da keine Relevanz? Das ist nicht möglich? Habe ich deinem Kommentar da richtig interpretiert? Danke.
Viele Grüße von
Der Johanna
Anzeige
AW: Formatierung aus Zelle auslesen
16.07.2021 14:14:34
UweD
Hallo
Genau. Die Schriftgröße ist in der Bedingten Formatierung NICHT änderbar.
LG UweD
AW: Formatierung aus Zelle auslesen
15.07.2021 13:04:16
Daniel
Hi
Eine flexible bedingte Formatierung, die das Format aus einer Vorgabezelle anwendet, gibt es meines Wissens nach nicht.
Das einzige was du machen kannst, ist beim Einrichten per Makro die Formatierungen nicht fest vorzugeben, sonden hier aus der Zelle auszulesen.
Also aus

.Color = RGB(255, 125, 125)
Wird dann

.Color = Sheets("Muster").Range("A1"). Interior.Color
Solltest du im Blatt "Muster" was ändern, wird die Änderung erst aktiv wenn das Makro 1x gelaufen ist.
Gruß Daniel
Anzeige
AW: Formatierung aus Zelle auslesen
15.07.2021 16:34:46
Die
Hallo Uwe, hallo Daniel,
zwei geniale Lösungen! Wow, vielen Dank für die Hilfe. Ich habe beide positiv getestet, muss sie natürlich noch auf die konkrete Situation anpassen. Das ist eine große Hilfe für mich!
Vielen Dank für eure Unterstützung, es freut sich
Die Johanna

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Formatierung aus einer Zelle auslesen in Excel


Schritt-für-Schritt-Anleitung

Um das Format einer Zelle auszulesen und auf eine andere anzuwenden, kannst du die folgende VBA-Anleitung nutzen. In diesem Beispiel wird die bedingte Formatierung in Excel verwendet, um die Formatierung aus einer Musterzelle zu übernehmen.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Rechtsklick auf „VBAProject (DeinWorkbook)“ > Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:
Option Explicit
Public SchrGr, SchrFett, HFarbe, FForm

Sub BedForm_setzen()
    With Sheets("Tabelle1").Range("B11:C500")
        .Cells.FormatConditions.Delete
        FForm = 2
        Call Form_Lesen
        .FormatConditions.Add Type:=xlExpression, Formula1:="=$CLB11=" & FForm
        .FormatConditions(.FormatConditions.Count).SetFirstPriority
        With .FormatConditions(.FormatConditions.Count)
            .Interior.Color = HFarbe
            .Font.Bold = SchrFett
            .StopIfTrue = False
        End With
        ' Weitere Formeln hier hinzufügen
    End With
End Sub

Private Sub Form_Lesen()
    Dim TB2 As Worksheet, Zeile As Integer, RNG As Range
    Set TB2 = Sheets("Muster")
    If WorksheetFunction.CountIf(TB2.Columns(1), FForm) > 0 Then
        Zeile = WorksheetFunction.Match(FForm, TB2.Columns(1), 0)
        Set RNG = TB2.Cells(Zeile, 1)
        SchrGr = RNG.Font.Size
        HFarbe = RNG.Interior.Color
        SchrFett = RNG.Font.Bold
    Else
        MsgBox "Für :'" & FForm & "' keine Formatierung gefunden"
    End If
End Sub
  1. Schließe den VBA-Editor und führe das Makro aus, um die bedingte Formatierung anzuwenden.

Häufige Fehler und Lösungen

  • Fehler: "Für :‘U’ keine Formatierung gefunden"

    • Lösung: Überprüfe, ob in der Musterzelle die entsprechende Bedingung vorhanden ist. Stelle sicher, dass die Werte in der ersten Spalte der „Muster“-Tabelle korrekt sind.
  • Fehler: Änderungen in der Musterzelle werden nicht übernommen

    • Lösung: Du musst das Makro erneut ausführen, um die neuesten Formatierungen anzuwenden. Excel aktualisiert die Formatierungen nicht automatisch.

Alternative Methoden

Wenn du die Formatierung nicht über VBA anpassen möchtest, kannst du auch manuell die Formatierung einer Zelle abfragen und in eine andere Zelle übertragen. Dies ist jedoch zeitaufwendiger und weniger flexibel als die VBA-Methode.


Praktische Beispiele

Hier ist ein Beispiel, wie die Schriftfarbe und die Ausfüllfarbe einer Zelle aus der Musterzelle gelesen und angewendet werden können:

Sub Beispiel()
    Dim MusterZelle As Range
    Set MusterZelle = Sheets("Muster").Range("A1")

    ' Farbe auslesen
    Dim SchriftFarbe As Long
    SchriftFarbe = MusterZelle.Font.Color
    Sheets("Tabelle1").Range("B11").Font.Color = SchriftFarbe

    ' Füllfarbe auslesen
    Dim AusfüllFarbe As Long
    AusfüllFarbe = MusterZelle.Interior.Color
    Sheets("Tabelle1").Range("B11").Interior.Color = AusfüllFarbe
End Sub

Tipps für Profis

  • Dynamische Zellreferenzen: Du kannst auch dynamische Zellreferenzen verwenden, um die Formatierung aus verschiedenen Zellen innerhalb des Makros auszulesen.
  • Verwende VBA Zelle auswählen: Mit Application.Goto kannst du gezielt zu bestimmten Zellen springen, um die Formatierungen schnell zu überprüfen.

FAQ: Häufige Fragen

1. Wie kann ich die Schriftgröße einer Zelle auslesen?
Leider ist die Schriftgröße in der bedingten Formatierung nicht änderbar. Du kannst sie jedoch manuell anpassen oder über VBA festlegen.

2. Gibt es eine Möglichkeit, mehrere Formatierungen gleichzeitig auszulesen?
Ja, du kannst das Makro erweitern, indem du mehrere Formatierungsbedingungen hinzufügst, die aus der Musterzelle gelesen werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige