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

Interior.Color intelligente Tabelle

Forumthread: Interior.Color intelligente Tabelle

Interior.Color intelligente Tabelle
07.06.2019 12:21:45
Felix
Hallo zusammen,
ich habe ein Problem mit einer TAbelle,, welche ich als ListObject formatiert habe und über ein makro mit Werten befülle.
Das Problem besteht darin, dass ich zu Monatsbeginn meine Tabelle übr ein Makro entleere und somit kein Eintrag mehr vorhanden ist. Wenn ich im Anschluss wieder einen Eintrag zur tabelle hinzufüge, dann übernimmt Excel die Formatiereung der Kopfzeile. In dieser ist beispielsweise die Hintergrundfarbe grau.
Also habe ich mir gedacht ich schreibe ein Makro, welches automatisch ausgeführt wird wenn eine Zeile zugefügt wird und die Tabelle einmal so formatiert wie ich sie haben möchte. (Der Mitarbeiter der damit am Ende arbeiten soll ist nicht in der Lage die Tabelle anständig zu formatieren. Dann sieht sie jeden Monat unterschiedlich aus)
Sub TabelleFormatieren()
Dim Zeile As Long
Dim tbl As ListObject
Set tbl = ActiveSheet.ListObjects("Abgänge")
With tbl
For Zeile = 2 To .UsedRange.Rows.Count
If Zeile Mod 2 = 0 Then
.Rows(Zeile).Interior.ColorIndex = 33
End If
Next Zeile
End With
End Sub
Das ist der Versuch dazu. Mir ist klar das im weiteren Verlauf nur jede zweite Zeile eingefärbt wird. Das kann ich dann auch selber anpassen. Mein Problem besteht darin, dass ich die Länge der Tabele nicht bestimmen kann. ichglaube es liegt daran, dass ich die tabelle nicht richtig anspreche. habe schon diverse Wege versucht, aber es klappt einfach nicht.
Kann mir jemand weiterhelfen wie ich hier weiterkomme ?
Grüße
Felix
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Interior.Color intelligente Tabelle
07.06.2019 12:46:12
Daniel
Hallo Felix,
ersetze mal UsedRange mit DataBodyRange.
Gruß
Daniel
AW: Interior.Color intelligente Tabelle
07.06.2019 12:51:52
Felix
Klappt leider auch nicht
AW: Interior.Color intelligente Tabelle
07.06.2019 12:54:50
Daniel
Was heißt denn klappt nicht? Lade doch sonst mal eine Beispielmappe hoch.
Anzeige
AW: Interior.Color intelligente Tabelle
07.06.2019 12:55:03
Torsten
Hallo Felix,
Frage: Wie leerst du denn deine intelligente Tabelle? Manuell?
Dann empfehle ich dir, es so zu machen wie ich. Loesche alle Zeilen komplett bis auf die Zeile unter den Ueberschriften. Diese laesst du mit allen Formatierungen und loeschst nur die Inhalte.
Dann werden auch alle Formatierungen wieder uebernommen.
Anzeige
AW: Interior.Color intelligente Tabelle
07.06.2019 12:56:13
Torsten
Sorry habs ueberlesen. Du leerst sie per Makro. Aber das Makro kann ja umgeschrieben werden
AW: Interior.Color intelligente Tabelle
07.06.2019 12:57:59
Felix
Mit diesem Makro lösche ich die Daten aus der Tabelle:
Sub ResetTable()
Dim tbl As ListObject
Set tbl = ActiveSheet.ListObjects("Abgänge")
'Delete all table rows except first row
With tbl.DataBodyRange
If .Rows.Count > 1 Then
.Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).Rows.Delete
End If
End With

Anzeige
AW: Interior.Color intelligente Tabelle
07.06.2019 13:07:58
Torsten
vielleicht so?
Sub ResetTable()
Dim tbl As ListObject
Set tbl = ActiveSheet.ListObjects("Abgänge")
'Delete all table rows except first row
With tbl.DataBodyRange
If .Rows.Count > 1 Then
.Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).Rows.Delete
.Offset(0, 0).EntireRow.ClearContents
End If
End With
End Sub
Gruss
Anzeige
AW: Interior.Color intelligente Tabelle
07.06.2019 13:24:20
Luschi
Hallo Felix,
ivh mache das so:

Dim objLst As ListObject, objHead As Range
'formatierte Tabelle definieren
Set objLst = Range("tbl_Liste1").ListObject
'Inhalt leeren
objLst.DataBodyRange.ClearContents
'Überschriftenzeile definieren
Set objHead = objLst.HeaderRowRange
'Tabellenobjekt verkleinern, dabei bleibt immer mindestens 1 Datenzeile erhalten
objLst.Resize objHead.Resize(2, objHead.Columns.Count)
Set objLst = Nothing: Set objHead = Nothing
Gruß von Luschi
aus klein-Paris
Anzeige
;
Anzeige

Infobox / Tutorial

Interior.Color in intelligenten Tabellen optimieren


Schritt-für-Schritt-Anleitung

Um eine intelligente Tabelle in Excel mit einer bestimmten Formatierung zu versehen, kannst Du folgende Schritte befolgen:

  1. Erstelle eine intelligente Tabelle: Wähle die Daten aus und gehe zu Einfügen > Tabelle. Aktiviere die Option "Meine Tabelle hat Überschriften".

  2. Makro zur Formatierung erstellen: Öffne den VBA-Editor mit ALT + F11. Füge ein neues Modul hinzu und kopiere den folgenden Code hinein:

    Sub TabelleFormatieren()
        Dim Zeile As Long
        Dim tbl As ListObject
        Set tbl = ActiveSheet.ListObjects("Abgänge")
        With tbl
            For Zeile = 2 To .DataBodyRange.Rows.Count
                If Zeile Mod 2 = 0 Then
                    .DataBodyRange.Rows(Zeile).Interior.ColorIndex = 33
                End If
            Next Zeile
        End With
    End Sub
  3. Makro zum Leeren der Tabelle erstellen: Füge den nachfolgenden Code ebenfalls in das Modul ein:

    Sub ResetTable()
        Dim tbl As ListObject
        Set tbl = ActiveSheet.ListObjects("Abgänge")
        With tbl.DataBodyRange
            If .Rows.Count > 1 Then
                .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).Rows.Delete
            End If
        End With
    End Sub
  4. Makros ausführen: Gehe zurück zu Excel und führe die Makros über Entwicklertools > Makros aus.


Häufige Fehler und Lösungen

  • Problem: Die Formatierung wird nicht übernommen.

    • Lösung: Stelle sicher, dass Du DataBodyRange anstelle von UsedRange verwendest, um die richtigen Datenzeilen anzusprechen.
  • Problem: Das Makro löscht alle Zeilen.

    • Lösung: Achte darauf, dass die Zeile unter den Überschriften nicht gelöscht wird. Dein Code sollte die erste Zeile beibehalten.

Alternative Methoden

Eine alternative Methode zur Formatierung von intelligenten Tabellen ist die Verwendung von bedingten Formatierungen. Du kannst dies wie folgt tun:

  1. Wähle die Daten in Deiner Tabelle aus.
  2. Gehe zu Start > Bedingte Formatierung > Neue Regel.
  3. Wähle "Formel zur Ermittlung der zu formatierenden Zellen verwenden" und gib eine Formel ein, die die gewünschten Bedingungen überprüft.

Praktische Beispiele

Hier ist ein Beispiel, wie Du die Hintergrundfarbe jeder zweiten Zeile in einer intelligenten Tabelle ändern kannst:

Sub TabelleFormatieren()
    Dim tbl As ListObject
    Set tbl = ActiveSheet.ListObjects("Abgänge")
    Dim i As Long
    For i = 1 To tbl.DataBodyRange.Rows.Count
        If i Mod 2 = 0 Then
            tbl.DataBodyRange.Rows(i).Interior.Color = RGB(200, 200, 200) ' Grau
        End If
    Next i
End Sub

Dieses Makro setzt die Hintergrundfarbe auf Grau für die geraden Zeilen in der Tabelle.


Tipps für Profis

  • Verwende With-Anweisungen: Dies hilft, den Code zu optimieren und zu verkürzen.
  • Teste Deine Makros regelmäßig: Achte darauf, dass alle Funktionen wie gewünscht arbeiten, um spätere Probleme zu vermeiden.
  • Dokumentiere Deinen Code: Kommentiere wichtige Schritte, damit Du und andere Benutzer den Code leichter verstehen können.

FAQ: Häufige Fragen

1. Wie kann ich die Tabelle automatisch formatieren, wenn ich neue Daten hinzufüge?
Du kannst ein Ereignis-Makro verwenden, das beim Hinzufügen neuer Daten in die Tabelle automatisch die Formatierung anpasst.

2. Welche Excel-Version wird benötigt?
Die beschriebenen Methoden sind in Excel 2010 und späteren Versionen verfügbar.

3. Gibt es eine Möglichkeit, die Formatierung rückgängig zu machen?
Ja, Du kannst einfach die Formatierung zurücksetzen, indem Du die Standardformatierungen in Excel anwendest oder ein weiteres Makro zur Rücksetzung der Formatierung schreibst.

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