如何用vba处理excel单元格区域的边框?

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

 

 

       

发表评论