본문 바로가기
VBA/엑사남_기초방

[기초방] VBA 100제 #53 [ 색상정렬 ]

by 일등미노왕국 2023. 7. 3.

색상 정렬하는 문제이다.

색상 관련한 문제는 많이 안낸거 같아서 앞으로 2 - 3 개 정도 재밌는 문제로 찾아가려 한다.

 

코드 진행은

1. 배열에 기본이 되는 색상코드들을 담고

2. 전체영역을 순환하면서 해당 색상이 배열의 몇번째에 위치값을 찾아서 해당 셀을 출력해주면 된다.

3. 이때 배경색과 글자색을 같게 하여 마치 배경만 나온거 처럼 연출한다.

4. 마지막으로 전체영역을 재 순환하며 글자색을 검은색으로 하여 코드를 마무리한다.

 

더보기
Option Explicit

Sub 컬러_정렬()

    Dim sample()
    Dim rngAll As Range: Set rngAll = [b4:b10]
    Dim rngA As Range
    Dim n&, sm, r&
    
    [k4:n10].Interior.Color = xlNone                '= 초기화
    [k4:n10].Font.Color = vbWhite

    ReDim sample(rngAll.Cells.Count - 1)
    
    For Each rngA In rngAll                         '= 배열에 기본 컬러 담기
    
        sample(n) = rngA.Interior.Color
        n = n + 1
    
    Next rngA
   
    For Each rngA In [d4].CurrentRegion
    
        r = Application.Match(rngA.Interior.Color, sample, 0)  '= 색상셀들의 위치를 기준셀과 일치여부로 판단
        
        With Cells(4, rngA.Column)
            haja_delay .Offset(r - 1, 7)
            .Offset(r - 1, 7) = rngA
            .Offset(r - 1, 7).Font.Color = rngA.Interior.Color
            .Offset(r - 1, 7).Interior.Color = rngA.Interior.Color '= 배경색과 일치시켜 아무것도 없는것처럼..
        End With
    
    Next rngA
    
    For Each rngA In [k4:n10]                       '= 엑셀을.....출력
    
        haja_delay rngA
        rngA.Font.Color = vbBlack
    
    Next rngA
   
End Sub

Function haja_delay(rngA As Range)

    Dim i&
    For i = 1 To 1500
    
        rngA.Select
        
    Next i
End Function

기초방53.xlsm
0.02MB

댓글