세진세상

VBA 문자열 함수 #2(StrConv, Format) 본문

VBA

VBA 문자열 함수 #2(StrConv, Format)

세진세상 2018. 2. 20. 22:21

VBA 문자열 함수 #2


VBA의 문자열 함수 중에서 '출력 방식'에 관련한 함수를 알아보겠다.

함수마다 여러 옵션을 가지고 있다. 이를 학습하면서 그 일부를 실습해보자.



StrConv(문자열, 옵션)

입력된 문자열을 옵션에 따라 변환된 문자열을 리턴한다.

변환 옵션은 코드 타이핑 시 자동 완성 기능이 도와주기 때문에 외울 필요까지는 없다.

다만, 해당 옵션이 무엇을 의미하는지 알아두자.


변환 옵션

vbUpperCase (1) : 문자열을 모두 대문자로 변환

vbLowerCase (2) : 문자열을 모두 소문자로 변환

vbProperCase (3) : 문자열의 각 단어 첫글자를 대문자로 변환


vbWide (4) : 1byte 문자를 2byte로 변환

vbNarrow (8) : 2byte 문자를 1byte로 변환


vbKatakana (16) : 일본어 히라가나를 가타카나로 변환

vbHiragana (32) : 일본어 가타카나를 히라가나로 변환


vbUnicode (64) : ANSI에서 Unicode로 변환

vbFromUnicode (128) : Unicode를 ANSI로 변환


괄호 안에는 숫자는 옵션을 줄여서 쓸 수 있는 값이다.


대/소문자를 변환하는 옵션은 그런대로 활용도가 있지만, 나머지 옵션은 애매한 편이다.

여기에 ANSI, Unicode 변환 옵션이 있는데, 간단하게 알아보겠다.


각 문자는 매칭된 숫자 코드를 가지고 있는데, 아스키(ASCII) 코드와 유니코드(Unicode)가 일반적이다.

ANSI 코드는 특수문자 등을 확장시킨 아스키코드라고 생각하면 되겠다.


위 옵션 중에 일부만 실습해보자.

스타워즈의 명대사, 'I am your Father' 를 세 가지 옵션을 활용해 출력해보겠다.


1
2
3
4
5
6
7
8
9
10
11
12
Sub StrConv_ex()
    Dim str As String
    
    str = "I am your Father"
    
    Debug.Print str; "의 문자열 변환"
    
    Debug.Print "Upper Case : "; StrConv(str, vbUpperCase)
    Debug.Print "Proper Case : "; StrConv(str, vbProperCase)
    Debug.Print "Wide : "; StrConv(str, vbWide)
   
End Sub
cs


심심하면 다른 옵션도 실습해보면 되겠다.



Format(문자열, 출력 포멧)

문자열을 출력포멧에 맞게 만들어주는 함수다.

사용자가 서식지정자를 사용해 임의의 서식을 지정하고, 함수를 통해 해당 서식의 형태로 문자열이 출력된다.

이를테면 전화번호 023456789를 (02)345-6789 와 같은 형식으로 만들 수 있다.


서식지정자

@ : 해당 위치에 문자가 있으면 표시, 없으면 공백으로 표시

& : 해당 위치에 문자가 있으면 표시, 없으면 표시하지 않음

> : 모든 문자를 대문자로 표시

< : 모든 문자를 소문자로 표시

! : 서식의 입력 방향을 반대로 하여 입력, 기본은 오른쪽에서 왼쪽으로 채워넣는다.


Format 함수는 문자열만이 아니라, 숫자와 날짜/시간 등도 서식을 지정할 수 있다.

지금은 문자열에 대해서만 실습해보겠다.


1. 123456789를 전화번호 형식으로 넣되, @와 &의 차이를 확인하자.

2. Thank You를 모두 대/소문자로 표시해보자.

3. 123456789를 전화번호 형식으로 넣되, !를 사용해 반대방향으로 입력하며 @와 &의 차이를 확인하자.


1
2
3
4
5
6
7
8
9
10
11
12
Sub Format_ex()
    '1
    Debug.Print "@ : "; Format("123456789""(@@@)@@@-@@@@")
    Debug.Print "& : "; Format("123456789""(&&&)&&&-&&&&")
    '2
    Debug.Print "> : "; Format("Thank You"">")
    Debug.Print "< : "; Format("Thank You""<")
    '3
    Debug.Print "!@ : "; Format("123456789""!(@@@)@@@-@@@(@)")
    Debug.Print "!& : "; Format("123456789""!(&&&)&&&-&&&(&)")
        
End Sub
cs


@와 &의 차이인 공백의 유무를 충분히 확인할 수 있다.



지금까지 문자열의 출력 방식을 지정하는 간단한 함수를 알아보았다.

StrConv 함수는 변환 옵션을 정해져 있고, Format 함수는 서식지정자를 아용한 커스터마이징이 특징이었다.


다음에는 다른 기능의 문자열 함수를 이어서 학습하겠다.

Comments