Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1812to1816
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

einfärben - ohne Bedingte Formatierung

einfärben - ohne Bedingte Formatierung
19.02.2021 10:46:53
alexx55
Hallo Zusammen,
ich möchte gerne eine VBA erstellen die folgendes beinhaltet:
Wenn in der ersten Spalte, in irgendeiner Zeile, ein bestimmter Name steht (z.B: Dokumentation), dann sollen alle Zellen in dieser Zeile, die Inhalte haben mit einer bestimmten Farbe eingefärbt werden. Die leeren Zellen in der jeweiligen Zeile sollen einfach leer bleiben.
Dies soll dann für ca. 10 verschiedene Begriffe anwendbar sein
Ich probiere jetzt schon seit 2 Std. und über eure Hilfe würde ich mich sehr sehr freuen!
(eine Bedingte Formatierung ist aufgrund der Größe des Dokuments und dem Austausch der Begriffe in der ersten Spalte eher ungünstig)
Ich wollte eine If schleife probieren aber mehr ist bis jetzt nicht rausgekommen:
If .Columne = B And .Value = "Mechanik" Then
Rows(.Row).Interior.Color.Index = 32
ElseIf .Columne = B And .Value = "Elektrik" Then
Viele Grüße
alexx55

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
trotzdem mit bedingter Formatierung
19.02.2021 10:58:08
ChrisL
Hi
https://www.herber.de/bbs/user/144065.xlsx
Du darfst die Frage auch wieder offen markieren. Aber die Grösse des Dokuments und Flexibilität scheinen mir keine Argumente gegen eine bedingte Formatierung. Ich glaube du bist damit effizienter.
Die Begriffe sind in Tabelle2 abgelegt und können dort einfach angepasst/ergänzt werden.
Formel für die bedingte Formatierung lautet:
=UND(ZÄHLENWENN(Begriffe!$A:$A;$A2);A2"")
cu
Chris
AW: trotzdem mit bedingter Formatierung
19.02.2021 11:07:22
alexx55
Vielen Dank für deine Antwort, aber leider brauch ich wirklich ein Makro, weil es so wie es momentan mit bedingten Formatierungen ist, oft überladen ist und durcheinander kommt.
Grüße
Anzeige
AW: einfärben - ohne Bedingte Formatierung
19.02.2021 11:04:27
Werner
Hallo,
wenn die Werte in den Zellen keine Formelergebnisse sind.
Sub Tabelle24_Schaltfläche1_Klicken()
Dim i As Long
'Blattname anpassen
With Worksheets("Tabelle1")
For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
Select Case .Cells(i, 1)
'Begriffe vervollständigen
Case "Dokumentation", "Begriff1", "Begriff2"
.Rows(i).SpecialCells(xlCellTypeConstants).Interior.Color = vbYellow
Case Else
End Select
Next i
End With
End Sub
Gruß Werner
AW: einfärben - ohne Bedingte Formatierung
19.02.2021 11:16:20
alexx55
Vielen Dank für die Antwort,
leider kenne ich mich nicht gut mit VBA aus und versteh nicht ganz wie ich jetzt noch die verschiedenen Farben einfüge? Bps: Mechanik - grün, Dokumentation - blau
Und leider habe ich auch Felde mit Formeln drin, welche miteingefärbt werden sollen.
Die Spalte auf die es sich bezieht wäre bei mir B
Entschuldige, dass ich es nicht ganz verstanden habe und Grüße
alexx55
Anzeige
AW: einfärben - ohne Bedingte Formatierung
19.02.2021 12:46:15
alexx55
Hallo Nochmal,
ich habe mitlerweile folgenden Code, der auch funktioniert. nur ist jetzt die komplette Zeile eingefärbt und nicht nur die felder in denen auch eine Zahl/Wort/Wert drin steht.
ich hoffe mir kann jemand helfen
Danke und Grüße
Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Integer, farbe As Integer
If Target.Column > 2 Then Exit Sub
For i = 2 To 5000
Select Case Cells(i, 2) 'für Zellen A1:A100
Case "Mechanik"
farbe = 23
Case "Konstruktion"
farbe = 50
Case "Dokumentation"
farbe = 43
Case "Service"
farbe = 38
Case "IBN"
farbe = 37
Case "FAT"
farbe = 44
Case "Elektrik"
farbe = 17
Case "Software"
farbe = 8
Case "Elektroplanung"
farbe = 34
Case "Test"
farbe = 26
Case "Verpackung"
farbe = 22
Case Else
farbe = xlNone 'wenn keine Übereinstimmung
End Select
With Range("B" & i & ":Z" & i)
'Trefferzelle in Spalte 1 = A
Rows(i).Interior.ColorIndex = farbe
End With
Next i
End Sub

Anzeige
AW: einfärben - ohne Bedingte Formatierung
19.02.2021 12:47:43
alexx55
Hallo Nochmal,
ich habe mitlerweile folgenden Code, der auch funktioniert. nur ist jetzt die komplette Zeile eingefärbt und nicht nur die felder in denen auch eine Zahl/Wort/Wert drin steht.
ich hoffe mir kann jemand helfen
Danke und Grüße
Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Integer, farbe As Integer
If Target.Column > 2 Then Exit Sub
For i = 2 To 5000
Select Case Cells(i, 2) 'für Zellen A1:A100
Case "Mechanik"
farbe = 23
Case "Konstruktion"
farbe = 50
Case "Dokumentation"
farbe = 43
Case "Service"
farbe = 38
Case "IBN"
farbe = 37
Case "FAT"
farbe = 44
Case "Elektrik"
farbe = 17
Case "Software"
farbe = 8
Case "Elektroplanung"
farbe = 34
Case "Test"
farbe = 26
Case "Verpackung"
farbe = 22
Case Else
farbe = xlNone 'wenn keine Übereinstimmung
End Select
With Range("B" & i & ":Z" & i)
'Trefferzelle in Spalte 1 = A
Rows(i).Interior.ColorIndex = farbe
End With
Next i
End Sub

Anzeige
AW: einfärben - ohne Bedingte Formatierung
19.02.2021 13:06:11
Werner
Hallo,
und warum hast du das Makro im Change-Event der Tabelle?
Vielleicht solltest du mal kurz erklären, was du eigentlich konkret willst. So wird doch das Makro jedesmal ausgelöst, sobald du im Blatt eine Zelle wechselst.
Gruß Werner
AW: einfärben - ohne Bedingte Formatierung
19.02.2021 13:17:11
alexx55
Hallo Werner,
weil das Marko jedes mal ausgelöst werden soll wenn jemand in einer Zeile einen neuen Wert einträgt.
Dann soll die Zelle sich in der Farbe einfärben, die der Begriff in der ersten Spalte, in der jeweiligen Zelle vorgibt.
Grüße
AW: einfärben - ohne Bedingte Formatierung
19.02.2021 13:32:44
Daniel
Hi
probiers mal mit
Rows(i).SpecialCells(xlcelltypeconstants).Interior.ColorIndex = farbe
das färbt alle Zellen der Zeile i, die einen festen Wert als Inhalt haben.
Gruß Daniel
Anzeige
AW: einfärben - ohne Bedingte Formatierung
19.02.2021 13:41:08
alexx55
Leider zerschießt es mir die ganze Datei sobald ich den code eingebe. Kann ich das irgendwie verhindert?
Danke für den Tipp auf jedenfall!
AW: einfärben - ohne Bedingte Formatierung
19.02.2021 14:12:52
Werner
Hallo,
das Worksheet_Selection_Change reagiert aber auf einen Wechesel der Zelle, also wenn du in Zelle B3 bist und in Zelle B4 klickst, dann läuft das Makro an.
Für einen Zelleintrag gibt es das Worksheet_Change Event.
Versuch das mal. Dein Worksheet_Selection_Change aber löschen.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long, farbe As Long, loSpalte As Long
If Target.Column = 2 And Target.Row > 1 Then
If Target.Count = 1 Then
Select Case Target
Case "Mechanik"
farbe = 23
Case "Konstruktion"
farbe = 50
Case "Dokumentation"
farbe = 43
Case "Service"
farbe = 38
Case "IBN"
farbe = 37
Case "FAT"
farbe = 44
Case "Elektrik"
farbe = 17
Case "Software"
farbe = 8
Case "Elektroplanung"
farbe = 34
Case "Test"
farbe = 26
Case "Verpackung"
farbe = 22
Case Else
End Select
loSpalte = Cells(Target.Row, Columns.Count).End(xlToLeft).Column
For i = 2 To loSpalte
If Len(Cells(Target.Row, i).Value) > 0 Then
Cells(Target.Row, i).Interior.ColorIndex = farbe
End If
Next i
End If
End If
End Sub
Die Färbung bezieht sich bei dem Makro jetzt aber nur auf die Zeile, in der in Spalte B ein Wert eingetragen wird.
Ist es das was du willst?
Gruß Werner
Anzeige
AW: einfärben - ohne Bedingte Formatierung
19.02.2021 14:26:47
alexx55
Hallo Werner,
jetzt läuft der Code so halb.
Wenn ich aber den Begriff in der ersten Spalte in einer Zelle ändere, oder einen Wert im Blatt dazu füge, wechseln sich meine Farben nicht automatisch mit, oder genau andersrum? Gibt es dafür eine Lösung?
Und danke für den tip mit dem Worksheet. Ich wollte, dass das Makro jedes mal ausgeführt wird sobald ein Kollege eins der Felder ändert.
Die Färbung soll sich nur auf den Eintrag in Spalte B genau in der bestimmten Zeile beziehen. für jeden Begriff eine andere Farbe.
Grüße Alexx55
AW: einfärben - ohne Bedingte Formatierung
19.02.2021 14:17:43
Daniel
naja, was heißt "zerschießen"
präziser kannst du nicht beschreiben, was passiert?
wenn du nicht die ganze Zeile sondern nur die Spalten von B bis Z in der jeweiligen Zeile färben willst (unabängig davon ob sie inhalt haben oder nicht) dann reicht auch folgende Ändrung in deinem Code:
mach aus dem
Rows(i).Interior.ColorIndex = farbe

das hier
.Interior.ColorIndex = farbe

denn nur so verwendest du den Zellbereich, den du zuvor in der WITH-Klammer definiert hast
Gruß Daniel
Anzeige
AW: einfärben - ohne Bedingte Formatierung
19.02.2021 14:31:25
alexx55
Excel stürzt dann ab und ich muss es komplett neu starten. Entschuldige dass ich mich nicht deutlich ausgedrückt habe :)
Ich will genau die Zellen färben die in der entsprechenden Zeile, mit Bezug auf erste Spalte dem entsprechenden Begriff, irgend einen Inhalt haben und wenn kein Inhalt ist sollen sie weiß bleiben.
Danke und Grüße
AW: einfärben - ohne Bedingte Formatierung
19.02.2021 14:54:50
Daniel
stimmt kann sein.
du hast ja selectionChange verwendet und das SpecialCells löst im Hintergrund das SelectionChange-Event aus, damit hast du eine Endlosschleife
Das Selection-Change für diese Aufgabe nicht das passende ist, hast du ja inzwischen mitbekommen.
wobei ich immer noch denke, dass die Bedingte Formatierung für deinen Fall einfach die beste Lösung ist.
du kannst dir ja ein Makro schreiben, dass die Bedingte Formatierung einrichtet, dass kann man gelegentlich laufen lassen, wenn durch kopier- und Einfügeaktionen die Bedingten Formate verstrubelt sind.
Außerdem würde ich Texte und Farben nicht im Code hinterlegen, sondern in einer zusätzlichen Tabelle.
Dann kannst du Texte und Farben hinzufügen oder ändern, ohne in den Code eingreifen zu müssen.
Gruß Daniel
Anzeige
AW: einfärben - ohne Bedingte Formatierung
19.02.2021 14:53:33
Daniel
stimmt kann sein.
du hast ja selectionChange verwendet und das SpecialCells löst im Hintergrund das SelectionChange-Event aus, damit hast du eine Endlosschleife
Das Selection-Change für diese Aufgabe nicht das passende ist, hast du ja inzwischen mitbekommen.
wobei ich immer noch denke, dass die Bedingte Formatierung für deinen Fall einfach die beste Lösung ist.
du kannst dir ja ein Makro schreiben, dass die Bedingte Formatierung einrichtet, dass kann man gelegentlich laufen lassen, wenn durch kopier- und Einfügeaktionen die Bedingten Formate verstrubelt sind.
Außerdem würde ich Texte und Farben nicht im Code hinterlegen, sondern in einer zusätzlichen Tabelle.
Dann kannst du Texte und Farben hinzufügen oder ändern, ohne in den Code eingreifen zu müssen.
Gruß Daniel
Anzeige
AW: einfärben - ohne Bedingte Formatierung
19.02.2021 15:09:05
alexx55
Hallo,
ja die Bedingte Formatierung soll nur leider nicht angewendet werden und extra rausgenommen :(
Wie man sowas als bedingte Formatierung als code macht weis ich leider nicht.
Und welches worksheet würde dann funktionieren ohne dass das system abstürzt?
Grüße Alex
AW: einfärben - ohne Bedingte Formatierung
19.02.2021 15:13:55
Daniel
Hi
mit Bedingter Formatierung so:
1. lege ein zweites Tabellenblatt an.
dort führst du in Spalte A jeden Begriff auf und färbst die Zelle in der Wunschfarbe
2. schreibe dir diesen Code in ein allgemeines Modul und führe ihn aus:
Sub Makro1()
Dim Zelle As Range
With Sheets("Tabelle1").Cells
.FormatConditions.Delete
For Each Zelle In Sheets("Tabelle2").Cells(1, 1).CurrentRegion
.FormatConditions.Add Type:=xlExpression, Formula1:="=Und(A1"""";$B1=""" & Zelle. _
Value & """)"
.FormatConditions(.FormatConditions.Count).Interior.Color = Zelle.Interior.Color
Next
End With
End Sub

das legt dir für jeden vorhandenen Wert in Spalte A der Tabelle 2 in der Tabelle 1 eine entsprechende Bedingte Formatierung an, die deinen Wünschen entsprechend arbeitet.
probier das mal aus.
wie gesagt, wenn sich die Farbwünsche änderen oder wenn die Datei träge wird weil einfügen und löschen von Zeilen zu viele Einzelformate zustande gekommen sind, dann lässt man einfach dieses Makro nochmal laufen.
Gruß Daniel
AW: einfärben - ohne Bedingte Formatierung
20.02.2021 20:59:39
alexx55
Hallo Daniel,
entschuldige die verspätete Antwort. Dein Makro ist echt klasse!!!
Es klappt sofort. Du hattest wirklich recht.
Danke und schönen Abend
alexx55

317 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige