Microsoft Excel

Herbers Excel/VBA-Archiv

Fette Rahmenlinien bei bedingter Formatierung

Betrifft: Fette Rahmenlinien bei bedingter Formatierung von: trine
Geschrieben am: 26.10.2014 21:16:59

Hallo zusammen,

ich verwende ein Makro zum formatieren einer Tabelle, um sie übersichtlicher zu gestalten. In Spalte E sind untereinander Projektnamen eingetragen. Ändert sich der Projektname in der Spalte, sollen die Zeilen u.a. durch eine fette Linie getrennt werden. Mein Makro funktioniert super, wenn in den Zellen der Tabelle keine bedingten Formatierungen hinterlegt sind. Ist eine bedingte Formatierung in der Zelle enthalten, wird die Rahmenlinie nicht gezeichnet.
Hat jemand einen Tipp, wie ich die Trennlinien "durchgehend" in die Tabelle bekomme?
Viele Grüße
trine

Mein Makro sieht so aus:

Sub test()
Rows("22:5000").Select
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
Columns("A:A").Select
    Selection.ClearContents
    With Selection
    .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    
       
    
    Range("E22:E5000").Select
    Selection.Copy
    Range("A22:A5000").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        
       Range("A22:BE5000").Select
    ActiveWorkbook.Worksheets("Projekt").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Projekt").Sort.SortFields.Add Key:=Range("E22:E5000"), SortOn:=   _
_
_
xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Projekt").Sort.SortFields.Add Key:=Range( _
        "BD22:BD50"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Projekt").Sort
        .SetRange Range("A22:BE5000")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    

Dim Zelle1 As Range
Dim Zelle2 As Range

Set Zelle1 = Cells(22, 1) 'Startzelle

Do While Zelle1.Value <> ""
    Set Zelle2 = Zelle1.EntireColumn.Find(what:=Zelle1.Value, lookat:=xlWhole, searchdirection:= _
 _
 _
xlPrevious)
    If Zelle2.Row > Zelle1.Row Then
        Range(Zelle1.Offset(1, 0), Zelle2).ClearContents
        Range(Zelle1, Zelle2).Merge
        
    End If
    Set Zelle1 = Zelle2.Offset(1, 0)
Loop
Dim aletzte As Long
Dim rng As Range

With ActiveSheet
    ' letzte benutzte Zeile ermitteln
    aletzte = .Cells(Rows.Count, 5).End(xlUp).Row
    
       With .Range("A22:CS" & aletzte)
        .BorderAround LineStyle:=xlThin
        .Borders(xlInsideHorizontal).LineStyle = xlThin
        '.Borders(xlInsideHorizontal).Weight = xlThin
        .Borders(xlInsideHorizontal).ColorIndex = 15
        '.Borders(xlInsideVertical).LineStyle = xlThin
        .Borders(xlInsideHorizontal).Weight = xlThin
        .Borders(xlInsideVertical).ColorIndex = 15
                .Borders(xlEdgeBottom).Weight = xlThick
        
        End With
   
    '' für jede weitere Zeile prüfen, ob ein neuer Tag beginnt
    For Each rng In .Range("E22:E" & aletzte)
        ' tag darunter ungleich Tag darüber und Tag darunter nicht leer ?
        If rng.Offset(1, 0).Value <> rng.Value And rng.Offset(1, 0).Value <> "" Then
            ' Strich ziehen ...
            .Range(.Cells(rng.Row, 1), .Cells(rng.Row, 143)) _
            .Borders(xlEdgeBottom).Weight = xlThick
           .Range(.Cells(rng.Row, 1), .Cells(rng.Row, 143)) _
            .Borders(xlEdgeBottom).ColorIndex = 1
           
            
        End If
    Next rng
End With
End Sub

  

Betrifft: AW: Fette Rahmenlinien bei bedingter Formatierung von: Ewald
Geschrieben am: 27.10.2014 00:22:00

Hallo,

bei bedingter Formatierung gibt es nur dünne Rahmen, diese mußt du aber auch dort einstellen.

Die bedingte Formatierung überdeckt den Zellenrahmen

Gruß Ewald


  

Betrifft: AW: Fette Rahmenlinien bei bedingter Formatierung von: trine
Geschrieben am: 27.10.2014 07:54:39

Hallo Ewald,
vielen Dank für Deine Antwort. Gibt es eine Möglichkeit, das Einfügen der fetten Trennlinie über einen VBA-Code trotz der bedingten Formatierungen zu erzwingen?

Viele Grüße
trine


  

Betrifft: AW: Fette Rahmenlinien bei bedingter Formatierung von: Ewald
Geschrieben am: 27.10.2014 10:58:04

Hallo trine,

das ist nicht möglich, da die bed. Formatierung die Zellformatierung überdeckt und in der bed.Formatierung fette Rahmen nicht möglich sind.

Bei großen Zellen könnte man eine Form drüberlegen,ohne Füllfarbe mit dickem Rahmen.

Für einen normalen Tabellenaufbau ist dies aber weniger geeignet.

Gruß Ewald


  

Betrifft: Das Erzeugen einer stärkeren Linie mit einem ... von: Luc:-?
Geschrieben am: 27.10.2014 14:14:31

…Makro dürfte trotz BedingtFormatierung genau dann kein Problem sein, Trine,
wenn die BedingtFormatierungen nichts an den ZellRahmen verändern, d.h., ihre entsprd FormatAbschnitte leer (Button Inhalte löschen deaktiviert=ausgegraut) sind, sonst nicht!
Gruß, Luc :-?


  

Betrifft: AW: Das Erzeugen einer stärkeren Linie mit einem ... von: trine
Geschrieben am: 28.10.2014 07:34:13

Hallo Luc,

ich habe die Zellrahmen aus der bedingten Formatierung rausgenommen, das hat leider nicht funktioniert. Jetzt habe ich die versucht, die Bedingte Formatierung in VBA zu schreiben. Wenn ich nur Fette Rahmen zeichnen will, funktioniert mein Code. Ich bekomme es aber nicht hin mit der zweiten Bedingung (priorität nach den fetten Rahmen),die Zelle einzufärben, wenn der Zellwert größer als "0" ist.
Kann mir da jemand weiterhelfen?
Mein Code sieht dafür so aus:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    Range("BG22:BQ44").Select
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=nicht($E22=$E23)"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Borders(xlBottom).Weight = xlThick
    End With
    
   Range("BG22:BQ44").Select
   Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=(NICHT(BG22=0)"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Font
        .ThemeColor = xlThemeColorLight2
        .TintAndShade = 0.599963377788629
    End With
       
    With Selection.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorLight2
        .TintAndShade = 0.599963377788629
    End With
    Selection.FormatConditions(1).StopIfTrue = False
    
End Sub



  

Betrifft: Dicke Linien im Bedingten Format von: Daniel
Geschrieben am: 30.10.2014 12:53:08

Hi

Die Bedingte Formatierung kann keine unterschiedlich dicken Rahmenlinien darstellen.
Sie kennt als .Weight nur xlThin.
Du kannst nur die Linienart oder die Farbe variieren.

wenn du über die Bedingte Formatierung bei einer Bestimmten Bediung (bsw: =A1="a") eine dicke linie brauchst, dann musst du so vorhehen:
1. die dicke Linie als normales Format einstellen.
2. als Bedingtes Format "keine Linie" wählen und die Bedingung invertieren (=A1<>"a")



Gruß Daniel


  

Betrifft: Dicke Linien im Bedingten Format von: Daniel
Geschrieben am: 30.10.2014 15:16:45

Hi

Die Bedingte Formatierung kann keine unterschiedlich dicken Rahmenlinien darstellen.
Sie kennt als .Weight nur xlThin.
Du kannst nur die Linienart oder die Farbe variieren.

wenn du über die Bedingte Formatierung bei einer Bestimmten Bediung (bsw: =A1="a") eine dicke linie brauchst, dann musst du so vorhehen:
1. die dicke Linie als normales Format einstellen.
2. als Bedingtes Format "keine Linie" wählen und die Bedingung invertieren (=A1<>"a")



Gruß Daniel


 

Beiträge aus den Excel-Beispielen zum Thema "Fette Rahmenlinien bei bedingter Formatierung"