Hallo zusammen,
ich habe bereits das Forum durchforstet, um die Frage nicht doppelt zu stellen, bin jedoch nicht fündig geworden.
Folgendes Problem, ich möchte einen Arbeitsplan für 7 Mitarbeiter erstellen. Jeder Mitarbeiter hat eine Farbe (Zellenfarbe).
Folgenden Code habe ich:
Kann ich den Fehler umgehen, so dass ich 7 anstelle der NUR 3 bedingten Formatierungen machen kann?
Der Code dürfte richtig sein.
Excel habe ich das 2007ner
Vielen Dank für die Hilfe schon einmal. Euer Forum ist sehr hilfreich!
Grüße
Nadine
ich kenne mich weder mit VBA Programmierung noch mit Excel 2007 aus. Mit Excel 2010 lassen sich mehr als 3 bedingte Formatierungen ganz herkömmlich machen.
Sorry dass ich nicht helfen kann.
LG Pfefferoni
Ich verstehe Dein Problem glaube ich noch nicht so richtig. Wenn Du doch mit VBA arbeiten kannst, kannst Du doch den Zellinhalt per VBA auslesen und die Zelle entsprechend färben. Die Frage ist dann nur, wann die Zellfärbung geschehen soll: beim öffnen/schließen der Datei, per Knopfdruck oder direkt aus einer Zellüberwachung?
Dann können wir mal weiter schauen…
Falls Excel 2007 allerdings nur 3 bedingte Formatierungen pro Zelle erlaubt (ich weiß, dass es bei Excel 2003 noch so war), dann wird das aber nicht funktionieren. Dann kannst du nur die Zellfarbe im Skript direkt ändern (ohne bedingte Formatierung).
Hllo Nadine,
welche Fehlermeldung kommt denn, und bei welcher Zeile? Excel 2007 kann nämlich mehr als 3 bedingte Formatierungen; ich habe daher die Vermutung, dass das Dokument noch im alten Format vorliegt; dann geht’s natürlich nicht.
Hi.
So kompliziert (mittels Makro) brauchst du das doch gar nicht machen.
Die bedingte Formatierung ist ab 2007 mächtiger geworden.
Hier kannst du unter
Bedingte Formatierung
Regeln verwalten
Neue Regel
Formel zur Ermittlung der zu formatierenden Zellen verwenden
Bedingung für dein Feld =$c$2=„P“
Formatierung auswählen (deine Farbe)
wird angewendet auf =…
Und dies dann für alle Mitarbeiter (Mitarbeiter = Regel) erweitern.
Hallo Nadine,
dein Code ist im Prinzip richtig, macht aber nichts anderes, als die bedingte Formatierung automatisch einzusetzen, anstatt manuell. Und die ist definitiv auf 3 Möglichkeiten begrenzt. Wenn du mehr Möglichkeiten haben willst, wirst du eine eigene Routine schreiben müssen und das Worksheet_Change-Ereignis einsetzen. Ein gutes Beispiel dafür findest du hier: http://hajo-excel.de/vba_format.htm
Vielen Dank, das Beispiel Tabelle 3 (in Format1) ist „meine Lösung“ - aber ist das ein Makro? Es funktioniert in der Tabelle wunderbar, aber wo sehe ich wie es so eingerichtet wurde?
Vielen Dank für deine Hilfe!
Ich habe hier mal einen kurzen Code geschrieben, den Du erweitern könntest:
Option Base 1
Sub Zellenfaerben()
Dim Zelle As Range
Dim MA(5, 2)
MA(1, 1) = "Müller"
MA(2, 1) = "Meier"
MA(3, 1) = "Schulze"
MA(4, 1) = "Günther"
MA(5, 1) = "Huber"
MA(1, 2) = 34
MA(2, 2) = 36
MA(3, 2) = 39
MA(4, 2) = 35
MA(5, 2) = 40
For Each Zelle In Range("B3:V34")
For i = 1 To UBound(MA)
If Zelle = MA(i, 1) Then Zelle.Interior.ColorIndex = MA(i, 2)
Next
Next
End Sub
Die Namen der Mitarbeiter und der dazugehörigen Farben kannst Du beliebig erweitern. Du musst dann nur in der Zeile
Dim MA(neueZahl,2)
eintragen.
Den Zielbereich kann man natürlich auch ändern oder flexibler gestalten.
Öffne Visual Basic (mit Alt + F11). Im linken Fenster siehst du die einzelnen Mappen mit den Tabellen. Mache einen Doppelklick auf die Tabelle, die dich interessiert (in deinem Fall Tabelle 3) und schon siehst du im Hauptfenster das Makro.
Du musst übrigens auch bei dir das Makro in die Tabelle schreiben, in der es benötigt wird damit es funktioniert, und nicht wie sonst üblich in ein Modul.
Sollten sich noch weitere Fragen ergeben, dann melde dich. Du musst nur immer etwas Geduld haben, weil ich nicht immer online bin.
Mit bedingter Formatierung ist Dir da nicht geholfen, die ist auf drei Bedingungen begrenzt.
Aber es gibt einen VBA-Code für das Ereigniss Change beim Sheet:
Private Sub Worksheet\_Change(ByVal Target As Range)
Dim Bereich As Range
Dim MyCell As Range
Set Bereich = Range("B3:v34")
For Each MyCell In Bereich
Select Case MyCell.Value
Case "A"
MyCell.Interior.ColorIndex = 3
Case "B"
MyCell.Interior.ColorIndex = 4
Case "C"
MyCell.Interior.ColorIndex = 6
Case "D"
MyCell.Interior.ColorIndex = 7
Case "E"
MyCell.Interior.ColorIndex = 8
Case "F"
MyCell.Interior.ColorIndex = 17
Case "G"
MyCell.Interior.ColorIndex = 20
End Select
Next
End Sub
Da die ColorIndex_Werte von 2003 zu 2007, zu 2010 etc und dann noch abhängig vom OS (Win XP, Vista, 7, 8) jeweils unterschiedlich sind, musst Du sie bei Dir selbst mal ermitteln… Dabei hilft:
Sub farbe()
For i = 1 To 32
Cells(i, 1) = i
Cells(i, 2).Interior.ColorIndex = i
Next i
End Sub
Hallo
Also das Programm ist natürlich quatsch. Es geht irgendwie nicht. was willst Du machen?
Irgendwie möchtest Du ja einer Zelle eine Hintergrundfarbe verpassen und einer Zelle ein Format hinzufügen, wie z.B. =A1 oder so. Dies ginge auch, hättest Du nicht mit Range(„B3:V34“).Select einen ganzen Block definiert.
Du must also die Formel nur in eine zelle schieben auf einmal.
Die Zeile
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, Formula1:="="„D“""
ist zwar gut gemeint, aber fehlt vor der Selection z.B. ein Range(„A1“).Select
Für das Einfügen vom Format kannst Du auch z.B. Ganz einfach diesen Code verwenden:
Selection.FormulaR1C1 = „=“„C“""
Oder den Code wie in der Microsoft Hilfe:
With Worksheets(1).Range(„e1:e10“).FormatConditions _
.Add(xlCellValue, xlGreater, „=$a$1“)
With .Borders
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 6
End With
With .Font
.Bold = True
.ColorIndex = 3
End With
End With
Hallo,
dafür benötigt man kein Makro, Excel 2007 kann mehr als 3 bedingte Formatierungen. Die Datei muss allerdings im *.xlsx oder *.xlsm Format gespeichert sein.
Gruß
Brandis