Sie können durch Tabellen iterieren, indem Sie ListObjects im Arbeitsblatt (oder in der Arbeitsmappe) durchlaufen und die gewünschten Rahmenformate anwenden (die Formatierung erfolgt über den Auswahlfall in der ApplyStyle-Funktion). Erfordert, dass Sie Ihre Tabellen so einrichten, dass sie als Listenobjekte erkannt werden.
Mein Code:
Option Explicit
Public Sub TEST()
Dim edgesArr()
edgesArr = Array(xlEdgeLeft, xlEdgeTop, xlEdgeBottom, xlEdgeRight, xlInsideVertical, xlInsideHorizontal)
With ActiveSheet
Dim tbl As ListObject
For Each tbl In .ListObjects
FormatTable edgesArr, tbl
Next tbl
End With
End Sub
Public Sub FormatTable(ByVal edgesArr As Variant, ByRef tbl As ListObject)
Dim currEdge As Long
With tbl.Range
For currEdge = LBound(edgesArr) To UBound(edgesArr)
ApplyStyle CStr(edgesArr(currEdge)), .Borders(edgesArr(currEdge))
Next currEdge
End With
End Sub
Public Sub ApplyStyle(ByVal currEdgeText As String, ByVal border As Object)
With border
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
Select Case currEdgeText
Case xlInsideVertical, xlInsideHorizontal
.Weight = xlMedium
Case Else
.Weight = xlThick
End Select
End With
End Sub
Sie können den aktuellen Bereich in eine Tabelle mit Syntax konvertieren wie in example unter:
Dim src As Range
Dim ws As Worksheet
Set src = Range("B5").CurrentRegion
Set ws = ActiveSheet
ws.ListObjects.Add(SourceType:=xlSrcRange, Source:=src, _
xlListObjectHasHeaders:=xlYes, tablestyleName:="TableStyleMedium28").Name = "Sales_Table"
Sie wollen alle Tabellen dicke Grenzen haben - innen und Umgebung? – QHarr
Und sind sie richtige Excel-Tabellen? d.h. Listenobjekte? – QHarr
Ja Ich möchte, dass alle Tabellen dicke Ränder haben, vorzugsweise dicker in der Umgebung. Sie sind nicht die richtigen Excel-Tabellen, ich fürchte, ich weiß nicht, wie Sie sie als Listobjects setzen. Ich werde jetzt drüber nachdenken! – CommYov