프로그래밍 할 줄 모르는 현업 사용자와 같이 작업하다보니 가끔 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