ich habe eine Liste mit Messpunkten zu unterschiedlichen Artikeln.
Da mal mehr und mal weniger Messpunkte zu den Artikeln vorhanden sind, möchte ich gerne zur Verbesserung der Übersichtlichkeit die Zeile irgendwie einfärben.
Also das sich die Farbe wieder ändert wenn B sich ändert.
Gibt es da eine Möglichkeit? Eine manuelle Färbung wäre nur Bedingt eine Lösung, da der Inhalt der Tabelle sich immer mal zwischendurch ändern kann.
14.07.2022, 10:57 (Dieser Beitrag wurde zuletzt bearbeitet: 14.07.2022, 10:57 von Statler.)
Es wäre hilfreich zu wissen ob es eine Begrenzte und festgelegte Menge an Bezeichnungen gibt
Wenn es nur eine begrenzte Anzahl von Bezeichnungen gibt, dann könntest Du z.Bsp. mit der bedingten Formatierung angeben, bei welcher Bezeichnung welche Farbe für die Zeile hinterlegt werden soll. Wenn das aber sehr viele Bezeichnungen sind, ist die Variante nicht sinnvoll.
Event könntest du eine Hilfsspalte eintragen die Prüft ob die Zeile vorher den gleichen Bezeichner hat.
Dann würdest du die ersten Zeilen in der Hilfsspalte z.Bsp mit einer 1 versehen, sobald der Bezeichner ein anderer ist als in der Zelle darüber eine 2 usw. Danach wieder eine 1. Das lässt sich relativ einfach über eine Wenn Abfrage realisieren.
Und dann wieder bedingte Formatierung. Wenn Hilfspalte / Zelle = 1 dann Farbe 1, wenn 2 dann Farbe 2. Zu guter letzt noch die Hilfsspalte ausblenden.
14.07.2022, 11:43 (Dieser Beitrag wurde zuletzt bearbeitet: 14.07.2022, 11:44 von Klaus-Dieter.)
Hallo Mario,
dazu braucht man keine Hilfsspalte und dergleichen. Die Anzahl der Begriffe spielt auch keine Rolle. Versuche es mal mit diesem Makro, (ist einer meiner Jugendsünden, geht bestimmt einfacher und kürzer).
Code:
Sub färben2()
' färbt Tabellenzeilen abhängig vom Inhalt einer Spalte ein
' Klaus-Dieter Oppermann
z = 2 ' Startzeile für Schleife(hier 2)
m = 0 ' Farbe für 1. Gruppe (0 = keine, 1 = grau)
Do While Cells(z, 1) <> "" ' Bedingung für Schleife (laufe solange Zelle
' einen Inhalt hat)
If Cells(z, 1) <> Cells(z - 1, 1) Then ' Wenn Zelle <> vorherige ...
m = m + 1 ' ... Schleifenzähler um 1 erhöhen
' m gerade Zahl?
mark = Int(m / 2) ' ... Variable durch 2 teilen ...
mmark = mark * 2 ' ... und mit zwei multiplizieren
End If ' Ende Bedingung
' Zellen färben, wenn m gerade Zahl
If mmark = m Then ' wenn Variable = Schleifenzähler ...
Range("A" & z, "F" & z).Select ' ... Zellen selektieren
With Selection.Interior ' ... Hintergrund füllen
.ColorIndex = 15 ' ... Füllfarbe grau
.Pattern = xlSolid ' ... durchgehende Fläche
End With ' Ende färben
End If ' Ende färben
z = z + 1 ' Schleifenzähler
Loop ' Wendepunkt für Schleife
End Sub ' Ende des Makros
Viele Grüße
Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
durch die sofort im Code sichtbaren ausführlichen Step-by-step-Kommentare erst einmal etwas überrascht und abgelenkt, habe ich dann Deine Einleitung erst als zweites gelesen und das Stichwort Jugendsünde entdeckt. So sauber kommentierten Code findet man in den Foren nur selten. Klasse und Danke!
Schöne Grüße
d`r Bastler von den VBAsteleien.de Win 10 & 11, Office 2019 & 2021 & macOS X.15, XL 2019
funktioniert so wie ich wollte, nur musste ich doch die EDV Nummer in Spalte A verlegen, Oder kann man in dem Code einstellen das er Spalte B benutzen soll?
14.07.2022, 12:56 (Dieser Beitrag wurde zuletzt bearbeitet: 14.07.2022, 12:57 von Klaus-Dieter.)
Hallo Mario,
Zitat:funktioniert so wie ich wollte, nur musste ich doch die EDV Nummer in Spalte A verlegen, Oder kann man in dem Code einstellen das er Spalte B benutzen soll?
dazu brauchst du nur die Spaltenbezüge (rot gekennzeichnet) von 1 auf 2 ändern. Cells(Z, 1)
@ d'r Bastler: Danke für die Blumen, wenn es die Zeit erlaubt, mache ich das öfter. (Hilfe zur Selbsthilfe)
b
Viele Grüße
Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
Sub färben3()
' färbt Tabellenzeilen abhängig vom Inhalt einer Spalte ein
' Klaus-Dieter Oppermann
' Variablen deklarieren
Dim lngZeile As Long ' Zähler für Schleife
Dim mark As Integer ' Zähler zum Umfärben
Dim mark2 As Integer ' Kennung für Farbwechsel
Dim farb As Variant ' Farbe definieren
For lngZeile = 2 To Range("A1").End(xlDown).Row ' Laufe von Zeile 2 bis Listenende
If Cells(lngZeile, 1) <> Cells(lngZeile - 1, 1) Then ' wenn neuer Wert, ...
mark = mark + 1 ' ... Zähler plus 1
mark2 = mark Mod 2 ' ... Nullwert erzeugen
End If ' Ende Auswahl
If mark2 = 0 Then farb = 10213316 Else farb = xlNone ' Farbe für Zeile(n) festlegen
Range("A" & lngZeile, "F" & lngZeile).Interior.Color = farb ' Zeile färben
Next lngZeile ' nächste Zeile
End Sub
Viele Grüße
Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden