Я пытаюсь уменьшить количество строк, необходимых для добавления границ (и другого форматирования) в ячейку.Уменьшить количество строк кода, необходимых для форматирования ячеек?
Вот код, который создает границу вокруг ячейки A1:
Sub test2()
Dim cel As Range
Set cel = Range("A1")
With cel.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With cel.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With cel.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With cel.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
End Sub
Как вы можете видеть, эти With
блоки занимают некоторое пространство. По какой-то другой причине, кроме того, что мой код «жесткий», и поэтому мне не нужно так много прокручивать, мне было интересно, могу ли я сделать это более компактным. Я думал, используя массив, но он не работает:
Sub test()
Dim arr()
Dim i As Integer
ReDim arr(1 To 4)
Dim cel As Range
Set cel = Range("A1")
arr = Array("xlEdgeTop", "xlEdgeBottom", "xlEdgeRight", "xlEdgeLeft")
For i = LBound(arr) To UBound(arr)
With cel.Borders(arr(i))
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Next i
End Sub
(Примечание: ошибка происходит на линии With cel.Borders(arr(i))
, "Run-Time Error '13': Несоответствие типов".)
Anyone есть идеи по сокращению вышеупомянутого, или это то, с чем мне придется жить?
Я не могу думать ничего от моей головы. Для форматирования всегда было много строк кода. – MatthewD
@cyboashu имеет ответ, но FYI 'Array (« xlEdgeTop »,« xlEdgeBottom »,« xlEdgeRight »,« xlEdgeLeft »)' должен быть 'Array (xlEdgeTop, xlEdgeBottom, xlEdgeRight, xlEdgeLeft)' Это числовые константы, а не строки , –
@TimWilliams - ага! Это делает: D Я предполагаю, что такие вещи, как 'xlEnd' и т. Д., Также являются константами и могут использоваться одинаково? – BruceWayne