코딩

[VBA, 엑셀] 정규식으로 휴대폰 번호를 다른 내용으로 바꾸기

김 숨 2024. 1. 4. 16:29

정규식 사용하는 방법

  1. Excel - VBA 편집기를 엽니다.
  2. 상단 메뉴에서 "도구" - "참조"를 클릭합니다.
  3. "참조" 대화상자가 나타나면, 목록에서 "Microsoft VBScript Regular Expressions 5.5"를 찾아 체크합니다.
  4. 확인 버튼을 클릭하여 참조를 적용합니다.

 

010-0000-0000 / 01000000000 <= 이 두 형태로 되어있는 문자열을 다른 문자로 바꾸는 코드

Sub ChangePhoneNum()
    Dim ColumnToCheck As Range
    Dim Cell As Range
    Dim RegPhone As Object ' RegExp 객체 변수 선언
    Set RegPhone = New RegExp

    RegPhone.Pattern = "(\d{3}-?\d{4}-?\d{4})"
    ' 변경할 휴대폰 번호 입력
    Set ColumnToCheck = ThisWorkbook.Worksheets("Sheet 이름").Range("F:F")
 
    ' 휴대폰 번호 변경
    ' 해당 열의 각 셀을 확인하고 휴대폰 번호 변경
    For Each Cell In ColumnToCheck
        Dim Matches As Object ' 매치된 결과를 저장할 변수
        Set Matches = RegPhone.Execute(Cell.Value)
        If Matches.Count > 0 Then
            Cell.Value = RegPhone.Replace(Cell.Value, "바꿀내용")
        End If
    Next Cell

End Sub

 

 As Range와  As Object 차이

 

- As Range : Excel의 범위를 나타내는 데이터 형식입니다. 

 

Range 객체는 셀, 행, 열 또는 여러 셀로 구성된 범위를 나타내며, VBA에서 Excel의 데이터를 조작하거나 처리할 때 주로 사용됩니다. 예를 들어, 특정 셀의 값을 읽거나 변경하거나, 특정 범위에 대한 작업을 수행할 때 Range 데이터 형식을 사용합니다.

- As Object : 모든 종류의 객체를 나타내는 데이터 형식입니다. 

Object 데이터 형식은 VBA에서 가장 일반적으로 사용되는 데이터 형식 중 하나로, 모든 종류의 개체를 변수에 할당할 수 있습니다. 예를 들어, Excel의 Range, Worksheet, Workbook과 같은 Excel 객체뿐만 아니라 다른 COM 객체, 사용자 지정 클래스 등을 처리할 때 Object 데이터 형식을 사용합니다.

따라서, As Range은 Excel 범위에 특화된 데이터 형식이고, As Object는 모든 종류의 객체를 다룰 수 있는 일반적인 데이터 형식입니다. 선택은 변수가 어떤 유형의 데이터를 저장하고 처리해야 하는지에 따라 달라집니다.