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

[기초방] VBA 100제 #20 [ 패턴별 색상칠하기 ]

by 일등미노왕국 2023. 1. 26.

1번부터 1000 * 20 번까지 3,6,9 가 들어간 숫자를 찾고 그숫자의 갯수가 짝수번이면 컬러인텍스를 8 / 그렇지 않으면 컬러인덱스를 6으로 하는 구문이다. 아래는 같은 크루인 딱총님이 작성한 코드인데 정규식을 모르는 상태에서 몇일만에 놀랍도록 빅스텝 성장을 보여주었다.

딱총님의 내일을 응원한다...물론 우리 무지님과 시훈아빠 그리고 닥터 브레드님도 항상 본인의 문제에 관심을 가져주셔서 감사드린다. 

 

정규식을 안쓰면 숫자들을 순환하며 Mid로 하나씩 걸러서 하나씩 비교해나가야 하지만 정규식을 사용하면  정규식의 Test와 Execute로 간단하게 풀 수 있는 문제이다.

 

더보기
Option Explicit

Sub 기초방20()

    Dim rngall As Range: Set rngall = [d6].Resize([b6], [b7])
    Dim rngA As Range
    Dim i&
    
    haja_format rngall                                          '= 초기화
    
    For Each rngA In rngall                                     '= 전체 영역을 순환
    
        i = i + 1: rngA = i                                     '= 영역에 숫자들을 채워라
        
        With CreateObject("vbscript.regexp")                    '= 정규식 선언
        
            .Pattern = "[369]"                                  '= 3,6,9 가 들어간 숫자
            .Global = True
            
            If .test(i) Then                                    '= 정규식에 일치하면
            
                If .Execute(i).Count Mod 2 = 0 Then             '= 일치된 매치값이 짝수이면
                      rngA.Interior.ColorIndex = 8              '= 인테리어 컬러를 8
                Else: rngA.Interior.ColorIndex = 6              '= 일치된 매치값이 홀수이면 인터리어 컬러인덱스를 6
                    
                End If
            End If
        
        End With
        
    Next rngA
    
    MsgBox "완료하였습니다."

End Sub

Function haja_format(rngall As Range)

    rngall.Interior.ColorIndex = xlNone
    rngall.ClearContents

End Function

기초방#20.xlsm
0.07MB

댓글