본문 바로가기
 
 
 
 
 
카테고리 없음

VBA Split 함수를 활용한 줄바꿈 처리

by kunshot 2024. 1. 3.

 
 
반응형

1. 개요

VBA(Virtual Basic for Applications)는 마이크로소프트 엑셀에서 사용되는 프로그래밍 언어로, 엑셀의 기능을 확장하고 사용자 정의 기능을 추가할 수 있습니다. VBA를 사용하여 엑셀 데이터를 처리할 때, 긴 문자열을 줄바꿈하여 보기 좋게 표시해야 하는 경우가 있습니다. 이러한 경우 VBA의 Split 함수를 활용하면 간편하게 줄바꿈 처리를 할 수 있습니다.

2. Split 함수란?


Split 함수는 특정 구분자를 기준으로 문자열을 나누는 함수입니다. 주어진 문자열을 구분자를 기준으로 나눠서 배열에 저장하여 반환합니다. Split 함수는 다음과 같은 형태로 사용됩니다.

Split(문자열, 구분자[, 최대개수[, 비교모드]])
  • 문자열: 분리할 대상 문자열
  • 구분자: 문자열을 나눌 기준이 되는 구분자(문자열)
  • 최대개수: 선택적 매개변수로, 반환할 최대 배열 개수를 지정합니다
  • 비교모드: 선택적 매개변수로, 문자열을 비교할 때 사용되는 방법을 지정합니다

3. 줄바꿈 처리 예제

아래는 VBA의 Split 함수를 활용하여 줄바꿈을 처리하는 예제입니다. 예제 코드는 다음과 같습니다.

Sub AddLineBreaks()
    Dim originalText As String
    Dim newText As String
    Dim splitText As Variant
    
    originalText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed at egestas elit, ut iaculis elit. Praesent at nunc sed urna dapibus commodo sed non turpis."
    splitText = Split(originalText, " ")
    
    newText = ""
    
    For i = LBound(splitText) To UBound(splitText)
        newText = newText & splitText(i) & " "
        If Len(newText) > 30 Then
            newText = newText & vbCrLf
        End If
    Next i
    
    MsgBox newText
End Sub

위 코드의 실행 결과로는 다음과 같은 메시지 박스가 나타납니다.

Lorem ipsum dolor sit amet,
consectetur adipiscing elit.
Sed at egestas elit, ut iaculis
elit. Praesent at nunc sed urna
dapibus commodo sed non turpis.

이 예제에서는 originalText 변수에 처리할 문자열을 저장하고, Split 함수를 사용하여 공백을 구분자로 나누어 splitText 배열에 저장하였습니다. 그리고 newText 변수를 사용하여 splitText 배열의 요소들을 하나씩 순회하며 newText에 추가합니다. 만약 newText의 길이가 30을 초과하면 줄바꿈 문자열인 vbCrLf을 추가하여 줄바꿈을 수행합니다.

4. 추가 예제


아래는 VBA의 Split 함수를 활용한 줄바꿈 처리를 더 다양하게 응용한 예제입니다.

예제 1: 숫자를 3자리마다 쉼표로 구분

Sub AddCommas()
    Dim number As String
    Dim splitNumber As Variant
    Dim formattedNumber As String
    
    number = "1234567890"
    splitNumber = Split(number, "")
    
    formattedNumber = ""
    
    For i = UBound(splitNumber) To LBound(splitNumber) Step -1
        formattedNumber = splitNumber(i) & formattedNumber
        If i > LBound(splitNumber) And (UBound(splitNumber) - i + 1) Mod 3 = 0 Then
            formattedNumber = "," & formattedNumber
        End If
    Next i
    
    MsgBox formattedNumber
End Sub

위 코드의 실행 결과로는 다음과 같은 메시지 박스가 나타납니다.

1,234,567,890

이 예제에서는 number 변수에 처리할 숫자 문자열을 저장하고, Split 함수를 사용하여 한 글자씩 splitNumber 배열에 저장하였습니다. 그리고 formattedNumber 변수를 사용하여 splitNumber 배열을 역순으로 순회하며 formattedNumber에 요소들을 추가합니다. 만약 요소의 인덱스가 splitNumber 배열의 첫 요소가 아니고, 3의 배수번째 요소이면 쉼표를 추가하여 3자리마다 숫자를 구분합니다.

예제 2: 문장의 단어별 글자수 세기

Function CountCharacters(sentence As String) As String
    Dim splitSentence As Variant
    Dim wordCount As String
    
    splitSentence = Split(sentence, " ")
    
    wordCount = ""
    
    For i = LBound(splitSentence) To UBound(splitSentence)
        wordCount = wordCount & splitSentence(i) & ": " & Len(splitSentence(i)) & " characters" & vbCrLf
    Next i
    
    CountCharacters = wordCount
End Function

위 함수를 사용하면 다음과 같이 문자열을 호출하여 사용할 수 있습니다.

Sub TestCountCharacters()
    MsgBox CountCharacters("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed at egestas elit, ut iaculis elit.")
End Sub

위 코드의 실행 결과로는 다음과 같은 메시지 박스가 나타납니다.

Lorem: 5 characters
ipsum: 5 characters
dolor: 5 characters
sit: 3 characters
amet,: 5 characters
consectetur: 11 characters
adipiscing: 10 characters
elit.: 5 characters
Sed: 3 characters
at: 2 characters
egestas: 7 characters
elit,: 5 characters
ut: 2 characters
iaculis: 7 characters
elit.: 5 characters

이 예제에서는 CountCharacters 함수를 사용하여 입력된 문장을 공백을 기준으로 분리하여 단어별 글자수를 카운트합니다. 이후 문장 내의 모든 단어별 글자수를 한 줄씩 추가하고, 결과를 문자열로 반환합니다.

5. 결론

이 글에서는 VBA의 Split 함수를 활용하여 줄바꿈을 처리하는 방법에 대해 알아보았습니다. Split 함수를 사용하면 엑셀 VBA에서 문자열을 효율적으로 처리할 수 있습니다. 다양한 예제를 통해 Split 함수의 활용법을 익히고, 자신만의 스크립트와 기능을 구현해보세요. 이러한 VBA 함수들은 엑셀 사용자에게 큰 도움이 되는 기능입니다.

반응형