在使用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


发表评论