在使用excel的过程中,常常需要处理单元格的边框,比如判断单元格是否有边框、给选定的单元格区域添加各种边框线等。
在vba中,可以使用单元格区域对象的Borders属性来返回各个位置的边框线对象,然后对其进行个性化设置。
一个单元格区域可以有内外、对角等各种边框线,相应的常量如下表所示。
常数 | 值 | 描述 |
xlDiagonalDown | 5 | 单元格区域左上角到右下角的对角边框线 |
xlDiagonalUp | 6 | 单元格区域左下角到右上角的对角边框线 |
xlEdgeBottom | 9 | 单元格区域的底端边框线 |
xlEdgeLeft | 7 | 单元格区域的左端边框线 |
xlEdgeRight | 10 | 单元格区域的右端边框线 |
xlEdgeTop | 8 | 单元格区域的顶端边框线 |
xlInsideHorizontal | 12 | 单元格区域内的水平边框线,不包含外围的四周边框线 |
xlInsideVertical | 11 | 单元格区域内的垂直边框线,不包含外围的四周边框线 |
边框的边框线属性可以通过Border对象的LineStyle属性获得。通过LineStyle属性即可以判断单元格是否有边框,还可以给单元格添加边框,当然也可以使用单元格区域的BorderAround方法进行边框线的添加。
由于这是个经常的操作,故将给excel单元格区域添加边框线的代码编写如下,成为可以独立调用的sub过程。
Sub SetBorder(oRng As Range) With oRng.Borders '一次性添加所有边框线 .LineStyle = xlContinuous '一次性删除所有边框线 .LineStyle = xlLineStyleNone End With '单独设置某种边框线 With oRng.Borders(xlDiagonalDown) '一次性添加所有边框线 .LineStyle = xlContinuous '一次性删除所有边框线 End With End Sub
当需要设置某个单元格区域的边框线时,只需要Call SetBorder(oRng)即可。
LineStyle属性有以下常量,通过对LineStyle属性的值可以判断单元格区域是否有边框线。
常熟 | 值 | 说明 |
---|---|---|
xlContinuous | 1 | Continuous line. |
xlDash | -4115 | Dashed line. |
xlDashDot | 4 | Alternating dashes and dots. |
xlDashDotDot | 5 | Dash followed by two dots. |
xlDot | -4118 | Dotted line. |
xlDouble | -4119 | Double line. |
xlLineStyleNone | -4142 | No line. |
xlSlantDashDot | 13 | Slanted dashes. |
如下代码可以判断单元格区域H2是否有右边框:
Sub QQ1722187970() Dim oWK As Worksheet Set oWK = Sheet2 Dim oRng As Range With oWK Set oRng = .Range("h2") With oRng If .Borders(xlEdgeRight).LineStyle = xlLineStyleNone Then MsgBox "无右边框" End If End With End With End Sub
发表评论