Anzeige
Archiv - Navigation
1260to1264
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

Bedingte Formatierung VBA

Bedingte Formatierung VBA
gisela
Hallo,
da ich nur bedingt mit dem Recorder Erfahrungen habe, folgendes Problem.
Mit dem Recorder sieht mein Versuch, die bedingte Formatierung für einen Bereich wie folgt aus - ich weiss dass das so ja nicht funktioniert...
Soll auch nur der Verdeutlichung meines Problems beitragen. Also so siehts mit dem Recorder aus: Sub formatierung2() Range("B15:I400").Select Selection.FormatConditions.Delete Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$J15=""X""" Selection.FormatConditions(1).Interior.ColorIndex = 6 Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$J15=""XX""" Selection.FormatConditions(2).Interior.ColorIndex = 3 Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$J15=""Y""" Selection.FormatConditions(3).Interior.ColorIndex = 15 Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$J15=""Z""" Selection.FormatConditions(3).Interior.ColorIndex = 35 Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$J15=""ZZ""" Selection.FormatConditions(3).Interior.ColorIndex = 38 Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$J15=""A""" Selection.FormatConditions(3).Interior.ColorIndex = 4 Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$J15=""AA""" Selection.FormatConditions(3).Interior.ColorIndex = 46 Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$J15=""ZF""" Selection.FormatConditions(3).Interior.ColorIndex = 28 Range("G9").Select End Sub
Kann mir bitte jemand helfen, das in VBA abzubilden.
Vielen Dank für jede Hilfe
Liebe Grüße
Gisela

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

Betreff
Benutzer
Anzeige
AW: Bedingte Formatierung VBA
26.04.2012 20:53:52
Tino
Hallo,
versuch es mal so, Tabelle muss aktiv sein.
Sub formatierung2()
With Range("B15:I400")
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:="=$J" & ActiveCell.Row & "=""X"""
.FormatConditions(1).Interior.ColorIndex = 6
.FormatConditions.Add Type:=xlExpression, Formula1:="=$J" & ActiveCell.Row & "=""XX"""
.FormatConditions(2).Interior.ColorIndex = 3
.FormatConditions.Add Type:=xlExpression, Formula1:="=$J" & ActiveCell.Row & "=""Y"""
.FormatConditions(3).Interior.ColorIndex = 15
.FormatConditions.Add Type:=xlExpression, Formula1:="=$J" & ActiveCell.Row & "=""Z"""
.FormatConditions(3).Interior.ColorIndex = 35
.FormatConditions.Add Type:=xlExpression, Formula1:="=$J" & ActiveCell.Row & "=""ZZ"""
.FormatConditions(3).Interior.ColorIndex = 38
.FormatConditions.Add Type:=xlExpression, Formula1:="=$J" & ActiveCell.Row & "=""A"""
.FormatConditions(3).Interior.ColorIndex = 4
.FormatConditions.Add Type:=xlExpression, Formula1:="=$J" & ActiveCell.Row & "=""AA"""
.FormatConditions(3).Interior.ColorIndex = 46
.FormatConditions.Add Type:=xlExpression, Formula1:="=$J" & ActiveCell.Row & "=""ZF"""
.FormatConditions(3).Interior.ColorIndex = 28
End With
End Sub
Gruß Tino
Anzeige
AW: Bedingte Formatierung VBA
26.04.2012 20:59:47
gisela
Hallo Tino,
vielen Dank für deine Hilfe.
Ich erhalte bei der 4. Formatierung eine Fehlermeldung - sieht genauso aus, wie bei meinem Recorderablauf.
Hast du noch eine Idee oder kann mir bitte jemand anderer helfen.
Liebe Grüße
Gisela
hab nicht auf Deine xlVersion geachtet.
26.04.2012 21:26:05
Tino
Hallo,
erst ab xl2007 können mehr als 3 Bedingungen angewendet werden.
Du hast ja jetzt eine Lösung bekommen.
Gruß Tino
AW: Bedingte Formatierung VBA
26.04.2012 20:59:26
ransi
HAllo Gisela
Tabelle1

 ABCDEFGHIJ
14          
15         A
16         X
17         Y
18         ZF
19          
20         XX
21          
22         ZZ
23          


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
werden die Werte in J berechnet oder gibst du die da von HAnd ein ?
ransi
Anzeige
AW: Bedingte Formatierung VBA
26.04.2012 21:01:32
gisela
Hallo Ransi,
in J werden die Werte per Hand eingegeben.
Liebe Grüße
Gisela
AW: Bedingte Formatierung VBA
26.04.2012 21:08:43
ransi
HAllo
Wenn du die Werte händisch eingibst teste mal dies:
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit



Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Bereich As Range
    Dim Zelle As Range
    Dim intIndex As Integer
    Dim rng As Range
    Set Bereich = Range("B15:I400")
    Set rng = Intersect(Target, Range("J15:J400"))
    If rng Is Nothing Then Exit Sub
    For Each Zelle In rng
        Select Case Zelle.Value
            Case "X": intIndex = 6
            Case "XX": intIndex = 3
            Case "Y": intIndex = 15
            Case "Z": intIndex = 35
            Case "ZZ": intIndex = 38
            Case "A": intIndex = 4
            Case "AA": intIndex = 46
            Case "ZF": intIndex = 28
            Case Else: intIndex = -4142
        End Select
        Bereich.Rows(Zelle.Row - 14).Interior.ColorIndex = intIndex
    Next
End Sub


Der Code gehört in das Modul des Tabellenblattes in dem das Ganze passieren soll.
http://www.online-excel.de/excel/singsel_vba.php?f=44#s4
ransi
Anzeige
AW: Bedingte Formatierung VBA
26.04.2012 21:18:14
gisela
Hallo,
vielen vielen Dank. Das ist genau das, was ich gebrauchen kann.
Liebe Grüße
Gisela
ALso bis ColorIndex=15 sollte es fktn, danach ...
26.04.2012 21:43:44
Luc:-?
…versuchst du, Xl11 zu überfordern, Gisela…! ;-)
Mehr als 3 Format-(Haupt-)Bedingungen sind nämlich erst ab Xl12 möglich. Wenn du in Xl11 diese 8 verschiedenen Zellfarben benötigst, kannst du das zwar auch mit VBA als BedingtFormat machen, musst dann aber alles etwas anders organisieren, denn die MaxAnzahl von 3 HptBedingungen kannst du auch mit VBA nicht überschreiten. Per dynamisiertem BedingtFormat ist das aber zu schaffen, ohne gänzlich auf die BedingtFormatierung zu verzichten (wie das bei den üblichen VBA-Ersatzlösungen der Fall ist), denn das hat den Vorteil, dass man sich nicht um die ursprgl Zellfarbe kümmern muss.
Schätze, dass du bei o.g. dynBedFmt sogar nur 1 HauptBedingung benötigst, mit 2en müsste deine HptBedingung für Type:=xlExpression so aussehen:
1. Formula1:="=ODER(WIEDERHOLEN(""A"";MIN(2;LÄNGE($J15)));WIEDERHOLEN(""X"";MIN(2;LÄNGE($J15)));WIEDERHOLEN(""Z"";MIN(2;LÄNGE($J15)))" → dazu dann UBedingg "A"/"AA", "X"/"XX" u."Z"/"ZZ"
…für Type:=xlCellValue Operator:=xlEqual dann …
2. Formula1:="=ODER(""Y"";""ZF"")" → dazu dann UBedingg "Y" u."ZF"
Die Unterbedingungen kannst du nicht direkt als BedingtFormat formulieren. Dazu musst du eine geeignete Ereignisprozedur benutzen (bei manuellem Werteintrag Worksheet_Change, bei Wert alsKalkErgebnis Worksheet_Calculate, nachträglich durch Anklicken bzw VBA-gesteuerten Zelldurchlauf Worksheet_SelectionChange). In der musst du den Wert von J15 abfragen (bei den Change-Prozeduren mit Target identisch) und danach ggf die in der jeweiligen FormatBedingung eingestellte Farbe ändern. Das geht problemlos. Im Ergebnis erhältst du lauter singuläre BedingtFormate (für jeweils 1 Zelle → hoffe, das es nicht zu viele wdn!).
Übrigens fktt das dann auch noch ab Xl12, obwohl es da nicht mehr nötig wäre, wenn man dort den Geltungsbereich auf die jeweilge Zelle beschränk (diese Eigenschaft gibt's erst ab xl12!).
Hoffe, dass dir das weiterhilft. Bspp inkl Dateien findest du unter dem o.g. Stichwort im Archiv).
Gruß Luc :-?
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige