엑셀 VBA 영어 첫 글자만 대문자로 변경하는 방법

엑셀(Excel)/VBA

엑셀 VBA 영어 첫 글자만 대문자로 변경하는 방법

 

환경: Microsoft Excel 2013

 

엑셀에서 영어 단어 첫 글자를 대문자로 변경하는 함수는 PROPER 입니다. VBA 에서 동일한 함수로 첫 글자를 대문자로 변경하는 로직을 만들어 보겠습니다. 오늘 학습의 목적은 엑셀에서 사용하는 함수를 VBA 에서도 동일하게 사용할 수 있다는 것을 아는 것입니다. 엑셀 워크시트에서 사용하는 모든 함수는 VBA에서 사용이 가능하다는 것이죠. 이 방법만 안다면 지원하는 기능을 굳이 함수로 만들지 않아도 됩니다.

 

먼저 첫 글자를 대문자로 만드는 엑셀 함수에 대해 알아 보겠습니다. 함수명은 PROPER 입니다. 함수 인수는 하나로 대문자로 변경할 영어 단어를 입력하면 됩니다.

엑셀 VBA 영어 첫 글자만 대문자로 변경하는 방법

 

VBA 에서 엑셀 시트에 있는 아이디와 메일서버 주소의 첫 글자를 대문자로 바꾸고 나머지는 소문자로 변경해 보도록 하겠습니다. 먼저 변경할 데이터들의 영역을 가져와야겠죠. CurrentRegion 속성으로 B2 부터 시작해서 인접한 곳에 있는 데이터 영역 전체를 가져옵니다. 그리고 For Each 반복문을 사용해서 데이터를 하나씩 꺼냅니다.

 

Dim rng As Range

Dim cell As Range

 

Set rng = ActiveSheet.Range("B2").CurrentRegion

 

For Each cell In rng

 

Next cell

 

다음은 Range.HasFormula 속성을 사용해서 수식이 포함되어 있는지 판단합니다. 문자열에 대소문자 변경을 위해서는 수식이 없는 데이터만 있어야 합니다. HasFormula 는 영역에 수식이 있는지 없는지 판단해서 True/False 로 반환합니다. Not cell.HasFormula 을 하게 되면 수식이 없는 조건문이 되는 것이죠.

 

If Not cell.HasFormula Then

   

End If

 

엑셀에서 사용하는 함수를 VBA 에서 사용하기 위한 별도의 개체가 있습니다. 그것은WorksheetFunction 입니다. WorksheetFunction 에 포함된 함수들이 워크시트에서 사용할 수 있는 함수들입니다. 모든 함수가 포함되어 있다고 보시면 됩니다.

 

cell.Value = WorksheetFunction.Proper(cell.Value)

 

위에서 설명한 소스들을 합친 전체 소스는 다음과 같습니다. 함수를 실행하면 For Each 반복문을 돌면서 셀에 있는 영어 단어에 Proper 함수를 적용합니다. 결과는 그림과 같습니다.

 

'' 첫 글자만 대문자로 변경하는 방법

Sub ProperUpper()

 

    Dim rng As Range

    Dim cell As Range

   

    Set rng = ActiveSheet.Range("B2").CurrentRegion

   

    For Each cell In rng

       

        If Not cell.HasFormula Then

            cell.Value = WorksheetFunction.Proper(cell.Value)

        End If

       

    Next cell

 

End Sub

 

엑셀 VBA 영어 첫 글자만 대문자로 변경하는 방법

저작자 표시 비영리 변경 금지
신고
Posted by 녹두장군