VBA Function

Str 함수

노만e 2025. 3. 16. 17:35

엑셀 VBA에서 Str 함수는 숫자를 문자열(String)로 변환하는 함수입니다.

즉, 숫자를 텍스트로 변환할 때 유용합니다.


1. 기본 문법

Str(숫자)
  • 숫자 → 변환할 숫자

📌 숫자를 문자열로 변환

📌 양수는 앞에 공백(" ")이 추가됨

📌 음수는 "-" 기호가 앞에 붙음

📌 소수점(.)과 숫자는 유지됨


2. 기본 사용 예제

Sub 기본_Str()
Dim 결과 As String
결과 = Str(123)
MsgBox 결과
End Sub

📌 출력: " 123" (앞에 공백 포함)

📌 숫자 123이 문자열로 변환됨


3. 음수 변환

Sub 음수_Str()
Dim 결과 As String
결과 = Str(-123)
MsgBox 결과
End Sub

📌 출력: "-123" (음수는 앞에 -가 붙음)


4. 소수 변환

Sub 소수_Str()
Dim 결과 As String
결과 = Str(3.14)
MsgBox 결과
End Sub

📌 출력: " 3.14" (앞에 공백 포함)


5. 앞 공백 제거 (Trim 사용)

Sub 공백제거_Str()
Dim 결과 As String
결과 = Trim(Str(456))
MsgBox 결과
End Sub

📌 출력: "456" (앞 공백 제거)

📌 양수 변환 시 생기는 공백을 Trim으로 제거 가능


6. 숫자를 텍스트로 변환하여 셀에 저장

Sub 셀_숫자문자변환()
Dim 숫자 As Integer
숫자 = 789
Range("A1").Value = Str(숫자)
End Sub

📌 A1 셀에 " 789" (앞 공백 포함) 저장

📌 엑셀에서 문자열로 인식되며 숫자로 계산되지 않음


7. 숫자를 텍스트로 변환 후 합치기

Sub 숫자_텍스트_연결()
Dim 결과 As String
결과 = "번호: " & Trim(Str(1001))
MsgBox 결과
End Sub

📌 출력: "번호: 1001"

📌 공백을 제거하고 텍스트와 숫자를 연결


8. 셀 값이 숫자인 경우 문자열로 변환

Sub 셀_숫자_문자열변환()
Dim 셀값 As Variant
셀값 = Range("A1").Value
Range("B1").Value = Trim(Str(셀값))
End Sub

📌 A1 셀 값이 숫자인 경우 문자열로 변환하여 B1에 저장


9. 배열에서 숫자를 문자열로 변환

Sub 배열_숫자_문자열변환()
Dim arr(1 To 3) As String
arr(1) = Trim(Str(10))
arr(2) = Trim(Str(20))
arr(3) = Trim(Str(30))
MsgBox "변환된 값: " & arr(1) & ", " & arr(2) & ", " & arr(3)
End Sub

📌 출력: "변환된 값: 10, 20, 30"

📌 배열에서 숫자를 문자열로 변환하여 저장 후 출력


10. 숫자 변환 후 문자열 비교 (Str vs CStr)

함수
설명
Str(123)
" 123" → 앞에 공백 포함
CStr(123)
"123" → 앞에 공백 없음
Trim(Str(123))
"123" → 공백 제거됨

📌 Str 함수는 양수 앞에 공백이 생기므로 Trim을 함께 사용하는 것이 좋음

📌 정확한 변환을 위해 CStr을 사용하는 것이 더 안정적


11. Str vs CStr 비교 예제

Sub Str_CStr_비교()
Dim 결과1 As String, 결과2 As String
결과1 = Str(100)
결과2 = CStr(100)

MsgBox "Str: '" & 결과1 & "' (공백 포함)" & vbNewLine & "CStr: '" & 결과2 & "' (공백 없음)"
End Sub

📌 출력:

Str: ' 100' (공백 포함)
CStr: '100' (공백 없음)

📌 숫자를 문자열로 변환할 때 Str은 공백 포함, CStr은 공백 없음


📝 정리

기능
VBA 코드
숫자를 문자열로 변환
Str(123)" 123"
음수 변환
Str(-123)"-123"
소수 변환
Str(3.14)" 3.14"
공백 제거
Trim(Str(456))"456"
숫자를 문자열로 변환하여 셀에 저장
Range("A1").Value = Str(789)
숫자를 텍스트로 변환 후 합치기
"번호: " & Trim(Str(1001))
배열에서 숫자를 문자열로 변환
arr(1) = Trim(Str(10))
Str vs CStr 비교
Str(100)" 100", CStr(100)"100"

🔥 VBA의 Str을 활용하면 숫자를 문자열로 쉽게 변환할 수 있습니다! 🚀