Die häufigsten Todesursachen bei Männern: Ikea Besuch | Erkältung | „Sie sind dran mit zurückschreiben.“

Hallo Herr Martin,

ich habe mal wieder ein Excel-Problem, diesmal in Richtung VBA.

Ich möchte gerne in eine dynamische Tabelle eine bedingte Formatierung einfügen, die eine Rahmenlinie-unten in jeder letzten Zeile eines Monats ausführt, wenn der Wert zutrifft.

soweit auch kein Problem, das würde ja auch mit einer normalen bedingten Formatierung funktionieren. Allerdings ist die Tabelle schon mit einem Rahmengitter belegt, um die Zellen besser zu unterscheiden.

Deswegen hätte ich gerne die Rahmenlinie-unten in „fett“, damit man die einzelnen Monate besser hervorhebt.

Da man das „fett“ in Excel bei bedingten Formatierungen nicht auswählen kann, habe ich durch Internetrecherche herausgefunden, dass man per VBA-Programmierung dieses Problem lösen kann.

Meine VBA-Kenntnisse sind allerdings gleich null, was mich nicht weiter bringt J

Anbei eine Beispieltabelle in der nach Belieben rumhantiert werden kann.

Hallo Herr F.,

Stimmt – das ist mir noch gar nciht aufgefallen: in der Bedingten Formatierung fehlt die Rahmenart. Doof!

Den Code hätten Sie doch sicherlich selbst hinbekommen.

Das Makro hängt an der Datei.

Sie können es in der Datei lassen oder in Ihre persönliche Makrodatei kopieren.

Sie können es über Entwicklertools / Makros (alternativ: Ansicht / Makros) starten – das Makro heißt „LinienEinfügen“

Oder Sie fügen ein Symbol in die Symbolleiste für den Schnellzugriff ein und starten es darüber.

Nicht ganz elegant, aber leicht zu ändern – in den ersten drei Zeilen lege ich die Spalte fest:

Sub LinienEinfügen()
    Const BEGINN As String = "A"
    Const ENDE As String = "I"
    Const SUCHSPALTE As String = "B"
    Dim i As Long
    Dim lngLetzteZeile As Long
    
    
    lngLetzteZeile = _
       ActiveSheet.Range("A1").SpecialCells(xlCellTypeLastCell).Row
    ' -- ermittle die Nummer der letzten Zeile
    
    For i = 1 To lngLetzteZeile
        If ActiveSheet.Range(SUCHSPALTE & i).Value <> "" And _
            ActiveSheet.Range(SUCHSPALTE & (i + 1)).Value <> "" Then
            If IsDate(ActiveSheet.Range(SUCHSPALTE & i).Value) And _
                IsDate(ActiveSheet.Range(SUCHSPALTE & (i + 1)).Value) Then
                If Month(ActiveSheet.Range(SUCHSPALTE & i).Value) <> _
                  Month(ActiveSheet.Range(SUCHSPALTE & (i + 1)).Value) Then
                    With ActiveSheet.Range(BEGINN & i & ":" & _
                        ENDE & i).Borders(xlEdgeBottom)
                        .LineStyle = xlContinuous
                        .ColorIndex = xlAutomatic
                        .TintAndShade = 0
                        .Weight = xlThick
                    End With
                End If
            End If
        End If
    Next i


End Sub

Guten Morgen Herr Martin,

vielen herzlichen Dank für die Codes.

Damit komme ich zurecht.

Allerdings kann ich leider noch nicht sagen, dass ich das hinbekommen hätte.

Trotzdem vielen Dank nochmal und schöne heiße Tage!