itsource

범위의 각 셀 주변 경계

mycopycode 2023. 6. 1. 22:44
반응형

범위의 각 셀 주변 경계

저는 특정 범위의 모든 셀 주위에 테두리를 추가하는 간단한 기능을 만들려고 합니다.훌륭한 기록을 사용하면 매우 쓸모없는 수많은 코드가 생성됩니다.아래 코드는 데이터의 '표'를 표시하며, 이 범위의 각 셀 주위에 테두리를 추가합니다.온라인에서 이에 대한 간단하거나 명확한 답을 찾지 못했습니다.

모든 도움에 감사드립니다!

Set DT = Sheets("DATA")
endRow = DT.Range("F" & Rows.Count).End(xlUp).Row
result = 3

For I = 2 To endRow
    If DT.Cells(I, 6).Value = Range("B1").Value Then
        Range("A" & result) = DT.Cells(I, 6).Value
        Range("B" & result) = DT.Cells(I, 1).Value
        Range("C" & result) = DT.Cells(I, 24).Value
        Range("D" & result) = DT.Cells(I, 37).Value
        Range("E" & result) = DT.Cells(I, 3).Value
        Range("F" & result) = DT.Cells(I, 15).Value
        Range("G" & result) = DT.Cells(I, 12).Value
        Range("H" & result) = DT.Cells(I, 40).Value
        Range("I" & result) = DT.Cells(I, 23).Value
        result = result + 1
    End If
Next I

범위의 모든 셀 주위에 경계를 설정하려면 코드 한 줄만 필요합니다.

Range("A1:F20").Borders.LineStyle = xlContinuous

또한 각 셀 주변의 테두리에 여러 효과를 쉽게 적용할 수 있습니다.

예:

Sub RedOutlineCells()
    Dim rng As Range

    Set rng = Range("A1:F20")

    With rng.Borders
        .LineStyle = xlContinuous
        .Color = vbRed
        .Weight = xlThin
    End With
End Sub

다음은 임의의 범위를 매개 변수로 하여 호출할 수 있습니다.

Option Explicit

Sub SetRangeBorder(poRng As Range)
    If Not poRng Is Nothing Then
        poRng.Borders(xlDiagonalDown).LineStyle = xlNone
        poRng.Borders(xlDiagonalUp).LineStyle = xlNone
        poRng.Borders(xlEdgeLeft).LineStyle = xlContinuous
        poRng.Borders(xlEdgeTop).LineStyle = xlContinuous
        poRng.Borders(xlEdgeBottom).LineStyle = xlContinuous
        poRng.Borders(xlEdgeRight).LineStyle = xlContinuous
        poRng.Borders(xlInsideVertical).LineStyle = xlContinuous
        poRng.Borders(xlInsideHorizontal).LineStyle = xlContinuous
    End If
End Sub

예:

Call SetRangeBorder(Range("C11"))
Call SetRangeBorder(Range("A" & result))
Call SetRangeBorder(DT.Cells(I, 6))
Call SetRangeBorder(Range("A3:I" & endRow))

제가 만든 모든 코드화된 엑셀 워크북에 추가하는 15개의 서브루틴이 있습니다. 이것이 그 중 하나입니다.다음 루틴에서는 영역을 지우고 테두리를 만듭니다.

샘플 통화:

Call BoxIt(Range("A1:z25"))

서브루틴:

Sub BoxIt(aRng As Range)
On Error Resume Next

    With aRng

        'Clear existing
        .Borders.LineStyle = xlNone

        'Apply new borders
        .BorderAround xlContinuous, xlThick, 0
        With .Borders(xlInsideVertical)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .Weight = xlMedium
        End With
        With .Borders(xlInsideHorizontal)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .Weight = xlMedium
        End With
    End With

End Sub

다른 방법이 있습니다.

Sub testborder()

    Dim rRng As Range

    Set rRng = Sheet1.Range("B2:D5")

    'Clear existing
    rRng.Borders.LineStyle = xlNone

    'Apply new borders
    rRng.BorderAround xlContinuous
    rRng.Borders(xlInsideHorizontal).LineStyle = xlContinuous
    rRng.Borders(xlInsideVertical).LineStyle = xlContinuous

End Sub

테두리를 추가하려면 다음과 같이 하십시오.

Range("C11").Borders(xlEdgeRight).LineStyle = xlContinuous
Range("A15:D15").Borders(xlEdgeBottom).LineStyle = xlContinuous

C#에서 이 작업을 수행했기 때문에 구문이 정확하기를 바랍니다.

xlWorkSheet.Cells(1, 1).Borders(Excel.XlBordersIndex.xlEdgeRight).LineStyle = Excel.XlDataBarBorderType.xlDataBarBorderSolid
xlWorkSheet.Cells(1, 1).Borders(Excel.XlBordersIndex.xlEdgeLeft).LineStyle = Excel.XlDataBarBorderType.xlDataBarBorderSolid
xlWorkSheet.Cells(1, 1).Borders(Excel.XlBordersIndex.xlEdgeBottom).LineStyle = Excel.XlDataBarBorderType.xlDataBarBorderSolid
xlWorkSheet.Cells(1, 1).Borders(Excel.XlBordersIndex.xlEdgeTop).LineStyle = Excel.XlDataBarBorderType.xlDataBarBorderSolid

새 매크로를 열지 않고 다른 매크로에 이 태스크를 포함할 수도 있습니다.

아래 그림과 같이 매크로에 훨씬 더 긴 코드가 포함되어 있기 때문에 Sub와 End Sub를 넣지 않습니다.

With Sheets("1_PL").Range("EF1631:JJ1897")
    With .Borders
    .LineStyle = xlContinuous
    .Color = vbBlack
    .Weight = xlThin
    End With
[![enter image description here][1]][1]End With

를 사용하여 매우 동적인 방법으로 모든 범위에 테두리를 추가할 수 있습니다.AddBorder그리고.GetCurrentRegionStartingGivenCellXato 코드에서 다음과 같이 기능합니다.

' First you may define a worksheet level named range in starting cell and name it as rngData
Sub BorderExample()

    Dim rngData         As Range ' Range to sort

    Set rngData = GetCurrentRegionStartingGivenCell(shtData.Range("rngData"))

    Call AddBorder(rngData, EdgeLeft)
    Call AddBorder(rngData, EdgeTop)
    Call AddBorder(rngData, EdgeRight)
    Call AddBorder(rngData, EdgeBottom)
    Call AddBorder(rngData, InsideVertical)
    Call AddBorder(rngData, InsideHorizontal)
    Call AddBorder(rngData, DiagonalUp)
    Call AddBorder(rngData, DiagonalDown)
    Call ClearBorder(rngData)
    Call AddBorder(rngData, Box)
    Call AddBorder(rngData, AllBorder)
    Call AddBorder(rngData, AllBorder, xlDot) ' Linestyle
    Call AddBorder(rngData, AllBorder, , xlMedium) ' Thickness
    Call AddBorder(rngData, AllBorder, , , vbRed) ' Color
End Sub

여기에서 전체 기사를 읽을 수 있습니다.

언급URL : https://stackoverflow.com/questions/13121425/border-around-each-cell-in-a-range

반응형