Please Enable JavaScript!
Gon[ Enable JavaScript ]

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

엑셀(Excel)/VBA
반응형

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

 

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

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

 

아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※
엑셀 VBA 매크로 디버깅, 디버그 코드 분석하기
엑셀 VBA 개발할 로그 출력하는 방법
엑셀 VBA 이항 논리 연산자 And, Or, Xor, Not 사용하기
셀 VBA GoTo 이용해서 줄로 분기하기

 

 

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 영어 첫 글자만 대문자로 변경하는 방법

아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※
엑셀 VBA 매크로 디버깅, 디버그 코드 분석하기
엑셀 VBA 개발할 로그 출력하는 방법
엑셀 VBA 이항 논리 연산자 And, Or, Xor, Not 사용하기
셀 VBA GoTo 이용해서 줄로 분기하기
반응형
Posted by 녹두장군

댓글을 달아 주세요

  1. 알 수 없는 사용자 2017.11.08 20:06  댓글주소  수정/삭제  댓글쓰기

    요런걸 빨리 알았으면 좋았을 것을...,
    전 핸드메이드로 수정했던 경험에 살짝 웃고 갑니다 ^^