我需要在Excel中将轮廓边框格式设置为多个范围。
这样的工作:
Union(Range("A1"), Range("B3")).BorderAround(...)
但是只要Ranges触摸,它们就会合并为一个范围,而边界将围绕整个合并范围。使用Range("A1,A2")
方式有效,但在区域数量方面受到限制并赢得了胜利。工作
有没有办法,给定两个范围r1,r2,将它们作为一个范围内的单独区域,无论它们是否接触?
编辑: 一点澄清:
我或许有一千个地方想要给边界,有时候会感动。我想得到一个包含所有(正确区域)的单一范围,并对该单一范围进行操作。原因如下:
GetRangesThatNeedsBorder()
。我不想使用"字符串方法"由于长度的限制,联合范围。我考虑过的几个选项:
编辑2: 是对的:
Public Sub test()
Dim r As Range
Set r = Union(Range("A1:A3"), Range("B1"), Range("B3"), Range("C1:C3"))
Call r.BorderAround(2)
End Sub
失败,合并A1:A4:
Public Sub test()
Dim r As Range
Set r = Union(Range("A1:A3"), Range("B1"), Range("B3"), Range("C1:C3"), Range("A4"))
Call r.BorderAround(2)
End Sub
答案 0 :(得分:1)
如果我理解正确,您希望以"A1,A2:A3,B1:B3,C3"
之类的字符串中的地址开头。在这种情况下,这应该工作:
Sub OutlineManyCells()
Dim ws As Excel.Worksheet
Dim RangeAddress As String
Dim RangeAddresses As Variant
Dim i As Long
RangeAddress = "A1,A2:A3,B1:B3,C3"
Set ws = ActiveSheet
RangeAddresses = Split(RangeAddress, ",")
For i = LBound(RangeAddresses) To UBound(RangeAddresses)
ws.Range(RangeAddresses(i)).BorderAround LineStyle:=2
Next i
End Sub
这解决了A1,A2和A3的问题,例如被合并到范围内的For Each Area中的单个区域(" A1,A2:A3,B1:B3,C3和#34;) ,同时让你把边界放在一组连续的细胞周围。
有关我的博文,请参阅:http://yoursumbuddy.com/undo-selections-selectracker/