Tidbits

VBA 에서의 정규식 사용법

프로그래밍 할 줄 모르는 현업 사용자와 같이 작업하다보니 가끔 Excel 의 macro를 작성해주는 경우가 종종 생기고 있다.

텍스트 중 일부 문자를 제거하는 기능이 필요해서 간단하게 짜고 보니 substitute 함수를 중첩해서 사용한 사용자나 replace 함수를
반복해서 쓴 내 방식이나 실상 똑같은거고 정규식을 활용하면 훨씬 깔끔하겠다 싶어 VBA 에서의 정규식 사용법을 찾아보았다.

VBA 에서 정규식을 사용하려면 우선 정규식 지원 컴포넌트를 추가해주어야 하는데 VBA 에디터 창의 Tools > Reference ( ‘도구 > 참조’) 에서 ‘Microsoft VBScript Regular Expressioins 5.5’ 를 선택해주어야 한다. (자세한 내용은 ‘Introduction to Regular Expressions in Visual Basic‘ 을 참고)

아래는 정규식 지원 설정 후 짠 간단한 샘플 소스로 정규식 이용한 함수는 “Using regular expressions to remove characters from a cell” 에서 가져온 것이다.

Function RemoveMatch(LookIn, PatternStr, Optional ReplaceWith = "")
    Dim re As Object

    Set re = CreateObject("VBScript.RegExp")
    With re
        .Pattern = PatternStr
        .Global = True
    End With

    RemoveMatch = re.Replace(LookIn, ReplaceWith)
    Set re = Nothing
End Function

Sub RemoveChar()
    Dim c As Variant
    Dim mc As String
    Dim lc As Variant

    lc = Range("A1").End(xlDown).Address
    mc = Application.InputBox("제거할 문자 전부 입력!")
    mc = "[" & mc & "]"

    For Each c In Range("A2:" & lc)
        c.Cells(1, 2) = RemoveMatch(c, mc)
    Next c
End Sub

Leave a comment