VBA - USER DEFINED FUNCTIONS

OBJEKTE:   ZELL-RAHMEN


Option Explicit

Sub RahmenLöschen()
Range("C7").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
End Sub

Sub RahmenLöschen_WITH()
Range("C7").Select
With Selection
    .Borders(xlDiagonalDown).LineStyle = xlNone
    .Borders(xlDiagonalUp).LineStyle = xlNone
    .Borders(xlEdgeLeft).LineStyle = xlNone
    .Borders(xlEdgeTop).LineStyle = xlNone
    .Borders(xlEdgeBottom).LineStyle = xlNone
    .Borders(xlEdgeRight).LineStyle = xlNone
    .Borders(xlInsideVertical).LineStyle = xlNone
    .Borders(xlInsideHorizontal).LineStyle = xlNone
End With
End Sub


Sub AlleRahmenEliminieren()
Dim Berechn_Modus, Aktual_Modus, i
Dim Bereich As Range, Areal As Range
Dim x As Integer
x = xlLineStyleNone
If Selection Is Nothing Then Exit Sub
' Geschwindigkeitsoptimierung durch Ausschalten der autom. Re-Kalkulation
Berechn_Modus = Application.Calculation
Aktual_Modus = Application.ScreenUpdating
Application.Calculation = xlManual
Application.ScreenUpdating = False
For Each Areal In Selection.Areas 'für jeden separaten Zellbereich
    For Each Bereich In Areal 'für jede Zelle
    ' alle Rahmen der aktuellen Zelle löschen
     For Each i In Array(xlEdgeTop, xlEdgeBottom, xlEdgeLeft, xlEdgeRight, xlDiagonalDown, xlDiagonalUp)
        Bereich.Borders(i).LineStyle = x
    Next i
    ' rechten Rahmen der links angrenzenden Zelle löschen
    If Bereich.Column > 1 Then
        Bereich.Offset(0, -1).Borders(xlRight).LineStyle = x
    End If
    ' linken Rahmen der rechts angrenzenden Zelle löschen
    If Bereich.Column < MaxSpalten Then
        Bereich.Offset(0, 1).Borders(xlLeft).LineStyle = x
    End If
    ' unteren Rahmen der Zelle oberhalb löschen
    If Bereich.Row > 1 Then
        Bereich.Offset(-1, 0).Borders(xlBottom).LineStyle = x
    End If
     ' oberen Rahmen der Zelle unterhalb löschen
    If Bereich.Row < MaxZeilen Then
        Bereich.Offset(1, 0).Borders(xlTop).LineStyle = x
    End If
Next Bereich
Next Areal
' Ende der Geschwindigkeitsoptimierung
Application.Calculation = Berechn_Modus
Application.ScreenUpdating = Aktual_Modus
End Sub