범위의 각 셀 주변 경계
저는 특정 범위의 모든 셀 주위에 테두리를 추가하는 간단한 기능을 만들려고 합니다.훌륭한 기록을 사용하면 매우 쓸모없는 수많은 코드가 생성됩니다.아래 코드는 데이터의 '표'를 표시하며, 이 범위의 각 셀 주위에 테두리를 추가합니다.온라인에서 이에 대한 간단하거나 명확한 답을 찾지 못했습니다.
모든 도움에 감사드립니다!
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
그리고.GetCurrentRegionStartingGivenCell
Xato 코드에서 다음과 같이 기능합니다.
' 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
'itsource' 카테고리의 다른 글
코드 서명 오류: 인증서 ID가 두 번 나타납니다. (0) | 2023.06.01 |
---|---|
Git로 하나의 명령에 여러 분기를 삭제할 수 있습니까? (0) | 2023.06.01 |
VBA를 사용하여 HTML 테이블을 Excel로 변환 (0) | 2023.06.01 |
표시된 보기 컨트롤러 해제 (0) | 2023.06.01 |
다운타임 없이 ASP.NET 애플리케이션을 배포하는 방법 (0) | 2023.06.01 |