VBA绘制边框

时间:2017-03-03 10:45:46

标签: excel vba excel-vba

以下是我在其中一个电子表格中用于格式化的代码,它可以正常运行。

它有点冗长,因为我从Macro Recorder获得了这个并修改了一下。

我遇到这个脚本的问题是,完成工作大约需要5到10秒。

是否有缩短此代码并加快流程的速度?

Sub FORMAT()

 Application.ScreenUpdating = False


Range("B5:EM5000").Select
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    Selection.Borders(xlEdgeBottom).LineStyle = xlNone
    Selection.Borders(xlEdgeRight).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone

    '''''
    Range("B5:D5").Select
    Range(Selection, Selection.End(xlDown)).Select

    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
       .TintAndShade = 0
        .Weight = xlHairline
    End With

      '''''
    Range("B5:c5").Select
    Range(Selection, Selection.End(xlDown)).Offset(0, 3).Select

   With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlDouble
     .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlDouble
       .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlDouble
       .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlDouble
       .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
       .TintAndShade = 0
        .Weight = xlHairline
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
       .TintAndShade = 0
        .Weight = xlHairline
    End With
   '''''
 Range("B5:c5").Select
    Range(Selection, Selection.End(xlDown)).Resize(, 25).Offset(0, 5).Select
  With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With


      '''''

    Range("B5:c5").Select
    Range(Selection, Selection.End(xlDown)).Resize(, 11).Offset(0, 27).Select


    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With


      '''''

      '''''

    Range("B5:l5").Select
    Range(Selection, Selection.End(xlDown)).Offset(0, 39).Select


    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With





     ''''''''''''''

      '''''

    Range("B5:k5").Select
    Range(Selection, Selection.End(xlDown)).Offset(0, 50).Select


    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With





     ''''''''''''''

      '''''

    Range("B5:k5").Select
    Range(Selection, Selection.End(xlDown)).Offset(0, 60).Select


    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With





     ''''''''''''''
      '''''

    Range("B5:k5").Select
    Range(Selection, Selection.End(xlDown)).Offset(0, 70).Select


    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With





     ''''''''''''''

       '''''

    Range("B5:k5").Select
    Range(Selection, Selection.End(xlDown)).Offset(0, 80).Select


    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With





     ''''''''''''''




       '''''

    Range("B5:k5").Select
    Range(Selection, Selection.End(xlDown)).Offset(0, 90).Select


    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With





     ''''''''''''''





       '''''

    Range("B5:k5").Select
    Range(Selection, Selection.End(xlDown)).Offset(0, 100).Select


    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With





     ''''''''''''''


    Range("B5:k5").Select
    Range(Selection, Selection.End(xlDown)).Offset(0, 110).Select


    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With





     ''''''''''''''

     ''''''''''''''


    Range("B5:k5").Select
    Range(Selection, Selection.End(xlDown)).Offset(0, 120).Select


    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With





     ''''''''''''''

     ''''''''''''''


    Range("B5:k5").Select
    Range(Selection, Selection.End(xlDown)).Offset(0, 130).Select


    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With

   ''''''''
    ''''''''''''''


    Range("B5:k5").Select
    Range(Selection, Selection.End(xlDown)).Offset(0, 140).Select


    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With

    Range("B5").Select
    Range(Selection, Selection.End(xlDown)).Offset(0, 38).Select


    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlDouble

        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous

        .TintAndShade = 0
        .Weight = xlHairline
    End With



    ''''''''




     ''''''''''''''
      Range("AP5").Select
    Range(Selection, Selection.End(xlDown)).Select

    Selection.Rows.AutoFit


     ''''''''''''''

      Range("e:f").Select
    Range(Selection, Selection.End(xlDown)).Select
     Selection.NumberFormat = "mmm-yy;@"

     Range("g:h").Select
      Range(Selection, Selection.End(xlDown)).Select
       Selection.NumberFormat = "#,##0"





    ''''''

   Range("B5:EM5000").Select

    With Selection.Font
        .Name = "Calibri"
        .SIZE = 8

    End With




     Application.ScreenUpdating = True

End Sub

3 个答案:

答案 0 :(得分:0)

将边框视为线:顶部,右侧,底部,左侧,垂直线(在范围内)和水平线(在范围内)

一行代码将绘制范围的所有行。你可以修改它们以获得你想要的东西。

要拥有一个干净的代码并更好地控制代码的执行,你应该学会编写函数,例如,我编写了一个函数,它给出了给定工作表中给定列的最后一行。

Sub DrawBorder()
    Dim lRow As Integer
    Dim cell As Range
    Dim rng As Range
    Dim WS As Worksheet

    Set WS = ActiveSheet 'you can set this to a specific sheet like Set WS=Sheets("Sheet1")

    'Clear all of the borders in the sheet
    WS.Cells.Borders.LineStyle = xlNone

    'Find the last row in column B=2
    lRow = LastRowInColumn(WS, 2)

    Set rng = WS.Range("B5:D" & lRow)

    'Borders of the cells inside the range
    rng.Borders.LineStyle = xlDot

    'Border of the range as a whole with double lines
    rng.Borders(xlEdgeTop).LineStyle = xlDouble
    rng.Borders(xlEdgeBottom).LineStyle = xlDouble
    rng.Borders(xlEdgeLeft).LineStyle = xlDouble
    rng.Borders(xlEdgeRight).LineStyle = xlDouble

'    'You can use these lines to remove the vertical/horizontal lines isnide a range
'    rng.Borders(xlInsideVertical).LineStyle = xlNone
'    rng.Borders(xlInsideHorizontal).LineStyle = xlNone

End Sub


Function LastRowInColumn(Optional sh As Worksheet, Optional colNumber As Long = 1) As Long
    'Finds the last row in a particular column which has a value in it
    If sh Is Nothing Then
        Set sh = ActiveSheet
    End If
    LastRowInColumn = sh.Cells(sh.Rows.Count, colNumber).End(xlUp).Row
End Function

答案 1 :(得分:0)

Sub Gray_Grid_Lines()

' This sets all the grid lines to a light gray

Cells.Select

    With Selection
          .Borders.LineStyle = xlContinuous
          .Borders.ThemeColor = 1
          .Borders.TintAndShade = -0.15
          .Borders.Weight = xlThin
    End With

Range("A1").Select

End Sub

答案 2 :(得分:0)

我使用此代码擦除选定区域中的边框,并在同一区域周围重新绘制细边框。不知道这是否会帮助任何人。

Sub noborder_border()
'
' noborder_border Macro
'
' Keyboard Shortcut: Ctrl+Shift+B
'
    With Selection
    .Borders(xlEdgeLeft).LineStyle = xlNone
    .Borders(xlEdgeRight).LineStyle = xlNone
    .Borders(xlEdgeTop).LineStyle = xlNone
    .Borders(xlEdgeBottom).LineStyle = xlNone
    .Borders(xlInsideVertical).LineStyle = xlNone
    .Borders(xlInsideHorizontal).LineStyle = xlNone
    .Borders(xlDiagonalDown).LineStyle = xlNone
    .Borders(xlDiagonalUp).LineStyle = xlNone
   End With

   With Selection
    .Borders(xlEdgeLeft).LineStyle = xlContinuous
    .Borders(xlEdgeLeft).Weight = xlThin
    .Borders(xlEdgeRight).LineStyle = xlContinuous
    .Borders(xlEdgeRight).Weight = xlThin
    .Borders(xlEdgeTop).LineStyle = xlContinuous
    .Borders(xlEdgeTop).Weight = xlThin
    .Borders(xlEdgeBottom).LineStyle = xlContinuous
    .Borders(xlEdgeBottom).Weight = xlThin
   End With
 End Sub