코딩/엑셀 / VBA

VBA - 문자들을 이어보기, 문자추가하기, 문자 합치기

YDDE- 2022. 3. 12. 18:01

# 복습 

 

Sub test()
  Debug.Print ([a1])

End Sub

을 코드 입력창에다가 쳐주면,

실제 VBA의 프로젝트 창에서 선택된 시트의 a1에 있는 값(문자열, 내용 등)이 콘솔로 소환됩니다.

 

 

 

# 문자 합치기, 추가하기, 이어쓰기

 

이번에는 이렇게 소환한 문자에 붙이고 싶은 문자를 한번 부쳐서 이어보겠습니다.

 

예를들어 a1셀에 Lee가 있고, 그 뒤에 Jin을 붙여서 Lee Jin이라는 단어를 만들고 싶은경우,

 

우리는 「+」 또는 「&」를 이용해서 붙일 수 있습니다.

 

 

그리고 문자의 경우, "" 쌍따음표 사이에 넣어서 이것이 문자열이라는 것을 코드에 알려줘야 합니다.

 

 

 

 

 

 

 

Sub test()
  Debug.Print ([a1] + " Jin")
End Sub

따라서 위의 코드를 실행시키면 

 

위와 같은 결과가 출력됩니다.

참고로 Jin을 붙일때, 주의해야할 점은 앞에 띄어쓰기가 있다는 것입니다. "Jin"이 아닌 " Jin"으로 이어야합니다.

 

「+」 로 문자를 이을 경우, 한가지 주의해야 할 점은 문자 + 숫자로 합치는 것이 안 된다는 점 입니다.

 

또한 숫자끼리 쓸경우, 덧셈으로 취급되어 결과가 출력됩니다.

 

Sub test()
  Debug.Print (1 + 1)

End Sub

 

따라서 숫자 + 숫자 = 숫자들을 더한 값이므로

 

위의 코드의 결과는

 

2가 됩니다.

 

 

 

 

 

그렇다면 「+」 말고 「&」를 이용해볼까요?

 

Sub test()
  Debug.Print ([a1] & " Jin")
End Sub

아까의 코드에서 +를 &로 바꾼 것입니다.

 

결과 역시 같습니다.

 

그러면 숫자 & 숫자는 어떨까요?

 

Sub test()
  Debug.Print (1 & 1)

End Sub

 

1 + 1의 경우 결과가 2였습니다.

 

이번에도 2가 나올까요?

 

 

 

11이 나왔습니다.

 

숫자 「1」이 자동으로 문자화 되어 이어졌기때문입니다.

1+1 는 덧셈처리가 되었지만, &을 사용하면 1은 숫자가 아니라 문자화가 되기때문에 11이라는 결과가 나옵니다.

 

 

 

 

 

그렇다면 「+」를 이용해서 덧셈이 아닌, 이어지도록 결과가 나올수는 없을까요?

 

꼭 +를 이용해서 11이라는 결과를 배출해야 할경우, 숫자 -> 문자열로 변환시켜주는 문법을 사용합니다.

 

str([숫자]) 의 형태를 사용합니다.

 

Sub test()
  Debug.Print (Str(1) + Str(1))
End Sub

위의 코드는 1을 str함수를 사용해, 숫자가 아닌 문자열로 변환한 코드입니다.

 

그렇기때문에 결과는 

11이 나왔습니다.

 

+를 이용해서도 문자열로 변환해 이어서 출력할수 있지만, 추천하지는 않습니다.

 

엑셀의 용량이 많고, 처리량이 많을 경우, 처리속도가 느려지기때문입니다.

 

되도록 &을 쓸것을 추천합니다.