[英]How to add outside border to irregular noncontiguous range?
I would like to outline only the outside border of a very strange noncontiguous range.我只想勾勒出一个非常奇怪的不连续范围的外边界。
Here's a working example of the stupidest (and only) way I can write this.这是我能写出的最愚蠢(也是唯一)方式的工作示例。
Sub test()
Range("A1").Borders(xlEdgeBottom).Weight = xlMedium
Range("B3").Borders(xlEdgeBottom).Weight = xlMedium
Range("C3").Borders(xlEdgeBottom).Weight = xlMedium
Range("D4").Borders(xlEdgeBottom).Weight = xlMedium
Range("A1").Borders(xlEdgeTop).Weight = xlMedium
Range("B2").Borders(xlEdgeTop).Weight = xlMedium
Range("C2").Borders(xlEdgeTop).Weight = xlMedium
Range("D3").Borders(xlEdgeTop).Weight = xlMedium
Range("A1").Borders(xlEdgeLeft).Weight = xlMedium
Range("B2").Borders(xlEdgeLeft).Weight = xlMedium
Range("B3").Borders(xlEdgeLeft).Weight = xlMedium
Range("D4").Borders(xlEdgeLeft).Weight = xlMedium
Range("A1").Borders(xlEdgeRight).Weight = xlMedium
Range("C2").Borders(xlEdgeRight).Weight = xlMedium
Range("D3").Borders(xlEdgeRight).Weight = xlMedium
Range("D4").Borders(xlEdgeRight).Weight = xlMedium
End Sub
Obviously this is not what I want to do.显然这不是我想要做的。 I would like to pass a range to this Sub.
我想将一个范围传递给这个 Sub。
I think I could add each cell to a Collection object (Or maybe just a Range object followed by a long string like: Range("A2, F6, K2:L4") ) and loop through the Collection, checking if neighboring cells are part of that Collection, and if not, placing a border.我想我可以将每个单元格添加到集合 object(或者可能只是一个范围 object 后跟一个长字符串,如:Range("A2, F6, K2:L4") )并循环遍历集合,检查相邻单元格是否是一部分该集合的,如果不是,则放置一个边框。
Any help appreciated!任何帮助表示赞赏!
Does this suit your needs?这符合您的需要吗?
Does this suit your needs?这符合您的需要吗?
Sub Test()
DrawBorderAroundSelection Range("A1,B2:C3,D3:D4"), xlMedium
End Sub
Sub DrawBorderAroundSelection(rngShape As Range, lineweight)
For Each c In rngShape.Cells
If c.Column = c.Parent.Columns.Count Then
c.Borders(xlEdgeRight).Weight = lineweight
ElseIf Intersect(c.Offset(0, 1), rngShape) Is Nothing Then
c.Borders(xlEdgeRight).Weight = lineweight
End If
If c.Row = c.Parent.Rows.Count Then
c.Borders(xlEdgeBottom).Weight = lineweight
ElseIf Intersect(c.Offset(1, 0), rngShape) Is Nothing Then
c.Borders(xlEdgeBottom).Weight = lineweight
End If
If c.Column = 1 Then
c.Borders(xlEdgeLeft).Weight = lineweight
ElseIf Intersect(c.Offset(0, -1), rngShape) Is Nothing Then
c.Borders(xlEdgeLeft).Weight = lineweight
End If
If c.Row = 1 Then
c.Borders(xlEdgeTop).Weight = lineweight
ElseIf Intersect(c.Offset(-1, 0), rngShape) Is Nothing Then
c.Borders(xlEdgeTop).Weight = lineweight
End If
Next
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.