반응형
VBA 코드 줄 넘김 규칙을 제대로 적용하면 가독성과 유지보수가 크게 향상된다. 언더스코어(_), 콤마 뒤 줄바꿈, 조건문 분할 등 구체적 예시를 통해 VBA 코드 줄 넘김 규칙을 단계별로 살펴보자.
VBA 코드 줄 넘김 규칙은 복잡한 매크로를 작성할 때 가독성·유지보수성을 높이는 핵심 요소다. 특히 줄이 길어지는 조건문이나 함수 호출부를 적절히 분할해두면 팀원 간 협업 시에도 오류를 최소화할 수 있다. 여기서는 VBA 코드 줄 넘김 규칙에 대한 기본 개념, 다양한 예시, 주의사항, 코드 작성 팁 등을 종합적으로 정리한다.
반응형
VBA 코드 줄 넘김의 기본 원리
언더스코어(_) 사용
- VBA에서 줄이 길어질 경우, 문장 끝에 공백 + 언더스코어(_)를 배치하면 물리적으로 다음 줄에서 코드를 이어갈 수 있다.
- 예를 들어 If 문의 조건이 매우 길다면, 다음과 같이 줄 넘김을 적용할 수 있다.
If (myValue > 10 And myValue < 100) And _
(anotherCondition = True) Then
MsgBox "조건을 만족했습니다."
End If
- 줄 끝 부분에 반드시 공백이 있어야 언더스코어(_)를 사용할 수 있으므로
...And_
처럼 공백 없이 쓰면 오류가 발생한다. - 언더스코어(_) 바로 뒤에 주석을 추가하면 잘려 보이므로, 줄 마지막 주석을 달 때는
Rem
이나'
기호를 쓰기 전 줄 넘김 처리를 주의해야 한다.
여러 개의 인수 분할
- 함수나 서브 프로시저를 호출할 때 인수가 많으면 한 줄에 길게 늘어져 가독성이 떨어진다. 줄 넘김을 통해 인수들을 정렬해두면 훨씬 깔끔하다.
Call SomeFunction( _
"Parameter1", _
123, _
True, _
Now, _
Sheets("Data").Range("A1") _
)
- 일부 개발자는 인수 리스트 전후에 괄호를 적절히 배치해 들여쓰기를 명확히 하고, 쉼표나 연산자가 눈에 들어오게 정렬하기도 한다.
문장 연결 구분자
- VBA는 기본적으로 문장 간 구분자로 콜론(:)을 쓸 수 있지만, 줄 넘김과는 별개다. 예를 들어
x=1 : y=2
같이 한 줄에 여러 문장을 배치할 수도 있다. - 긴 문장을 여러 줄로 나누는 것과 문장을 한 줄에 몰아쓰는 것은 상반된 개념이므로, 적절한 코드 스타일을 유지하려면 콜론 사용을 최소화하고, 필요한 경우에만 선택적으로 사용한다.
다양한 줄 넘김 시나리오
조건문 줄 넘김
If ... Then ... ElseIf
구조가 길어질 때는 각 조건을 줄바꿈해 가독성을 높인다.
If (score >= 90 And score <= 100) Then
MsgBox "A등급"
ElseIf (score >= 80 And score < 90) Then
MsgBox "B등급"
ElseIf (score >= 70 And score < 80) Then
MsgBox "C등급"
Else
MsgBox "재시험 필요"
End If
- 위 예시는 조건문 줄 넘김 규칙을 단순히 If-ElseIf로 구분했지만, 조건 자체가 길어질 경우
And
,Or
를 중심으로 언더스코어(_)를 삽입해줄 수 있다.
With ~ End With 구문의 줄 넘김
- With 구문 안에서 메서드나 속성을 여럿 호출하면 한 줄이 길어질 수 있다. 아래 예시처럼 메서드마다 줄바꿈하면 직관적이다.
With Sheets("Result")
.Range("A1").Value = "결과 요약"
.Range("B2").Formula = "=SUM(Data!B2:B100)"
.Range("C2").Font.Bold = True
.Range("C2").HorizontalAlignment = xlCenter
End With
- 하나의 메서드/속성이 지나치게 길다면 역시
... _
형태로 줄 넘김하여 가독성을 더 높일 수 있다.
연산자 기준 정렬
- 조건문이나 수식이 여러 줄로 나뉠 때,
=
,+
,-
,And
,Or
등 연산자를 기준으로 줄의 끝에 배치하거나 시작에 배치해 정렬하는 방식이 있다. - 예를 들어, 긴 SQL 쿼리를 VBA에서 작성하는 경우 다음과 같이 줄 넘김 규칙을 적용할 수 있다:
Dim sql As String
sql = "SELECT CustomerName, OrderDate, TotalAmount " & _
"FROM Orders " & _
"WHERE OrderDate >= #2024-01-01# " & _
"AND TotalAmount > 1000 " & _
"ORDER BY OrderDate DESC"
- 이렇게 작성하면 쿼리 각 절을 한눈에 파악하기 쉽다.
연속된 문자 결합
- 문자열이 길어져 한 줄에 담기 어렵다면,
& _
형태로 줄을 이어붙인다.
Dim longString As String
longString = "이것은 매우 긴 문자열로 " & _
"다음 줄부터 계속 연결되며, " & _
"정확한 줄 넘김 규칙을 지키면 " & _
"코드 가독성이 훨씬 좋아집니다."
MsgBox longString
- 모든 연속된 줄에
& _
이 들어가야 하며, 줄 마지막에 공백 후_
을 넣는 걸 잊지 않아야 한다.
권장 들여쓰기 스타일
블록 구조 들여쓰기
- If ~ End If, For ~ Next, Sub ~ End Sub 같은 블록은 한 수준 들여쓰기 후 내부 코드 작성이 일반적이다.
- 예:
Sub CheckScores()
Dim i As Long
For i = 1 To 10
If Cells(i, 1).Value >= 50 Then
Cells(i, 2).Value = "합격"
Else
Cells(i, 2).Value = "불합격"
End If
Next i
End Sub
- If, For, Select Case, Do While 등 블록의 시작과 끝을 찾기 쉽게 하려면, 2~4칸 들여쓰기를 고정하면 좋다.
중첩 구조 시 들여쓰기 심화
- If 안에 또 다른 If나 For가 들어가면 들여쓰기를 한 번 더 한다. 너무 깊은 중첩은 구조를 다시 짜볼 필요가 있지만, 어느 정도는 불가피하다.
If customerName = "홍길동" Then
If orderAmount > 50000 Then
Debug.Print "특별 할인을 적용합니다."
Else
Debug.Print "일반 할인이 적용됩니다."
End If
Else
Debug.Print "할인 대상 아님"
End If
실제 코딩 시 주의 사항
줄 넘김 뒤 주석 사용
- 언더스코어(_) 뒤에 곧바로 주석(
'
)을 달면 문법 오류가 날 수 있다. 예:
' 잘못된 예시
If x > 10 And _
y < 5 ' 내림 조건
Then ' => 오류 발생
- 줄 끝에 주석을 달아야 할 경우, 코드와 주석 사이에 언더스코어(_)를 넣지 않도록 유의하거나, 주석을 별도 줄로 분리한다.
괄호와 쉼표의 위치
- 인수나 조건을 줄바꿈할 때 괄호·쉼표·연산자가 어디 위치하는지가 중요한 가독성 포인트다.
- 모던 언어들은 흔히 연산자를 다음 줄의 맨 앞에 배치하지만, VBA에선 주로
(문장 ... _
형태로 이어서, 연산자는 뒤쪽 줄 끝에 오는 경향이 많다.
Label과 GoTo
- VBA에는 Label(예:
ErrHandler:
)이나GoTo
문이 있지만, 가급적 사용을 지양하고 구조화된 If나 For를 쓰는 편이 좋다. - 어쩔 수 없이 예외 처리를 위해
GoTo ErrorHandler
를 쓸 때도, 줄 넘김 규칙을 준수해 Label이 코드 사이에 파묻히지 않도록 주의한다.
자동 정렬 도구 활용
- 기본 VBA 에디터는 자동 정렬 기능이 제한적이므로, MZ-Tools 같은 서드파티 확장 플러그인을 사용하면
Reformat Code
기능 등을 통해 일부 줄 넘김 규칙을 자동화할 수 있다. - 이때 원하는 포맷(들여쓰기 크기, 언더스코어(_) 위치 등)을 커스터마이징해두면 반복 작업이 줄어든다.
코드 예시: 복합 조건문과 줄 넘김
아래는 VBA 코드 줄 넘김 규칙을 구체적으로 적용한 예시다. 조건문이 길고, 함수 호출 시 인수가 많아 줄이 확장되는 상황을 상정했다.
Option Explicit
Sub GenerateReport()
Dim total As Long
Dim dataRange As Range
Dim isValid As Boolean
' 긴 범위 설정
Set dataRange = Sheets("Data").Range("A2:B500")
' 복합 조건 판단
If (CheckDate(Sheets("Config").Range("C1").Value) = True) And _
(Sheets("Config").Range("D1").Value = "Y") And _
(Sheets("Option").Cells(2, 3).Value < 500) Then
isValid = True
Else
isValid = False
End If
If isValid = True Then
total = CalculateTotal( _
dataRange, _
Sheets("Option").Range("A1").Value, _
Sheets("Option").Range("B1").Value _
)
MsgBox "총합: " & total, vbInformation
Else
MsgBox "조건 불충족: 보고서 생성 불가", vbExclamation
End If
End Sub
Function CalculateTotal( _
ByVal rng As Range, _
ByVal factor As Long, _
ByVal offset As Long _
) As Long
Dim cell As Range
Dim sumValue As Long
sumValue = 0
For Each cell In rng
If IsNumeric(cell.Value) Then
sumValue = sumValue + (cell.Value * factor + offset)
End If
Next cell
CalculateTotal = sumValue
End Function
Private Function CheckDate(val As Variant) As Boolean
If IsDate(val) Then
If CDate(val) > Date Then
CheckDate = False
Else
CheckDate = True
End If
Else
CheckDate = False
End If
End Function
위 코드에서 주의할 점:
If ( ... ) And _ ( ... )
구문을 사용해 조건을 가로로 너무 길게 늘리지 않았다.CalculateTotal
함수 호출부에서 인수를 나열할 때 각 줄 끝에 쉼표와 언더스코어(_)를 배치해 가독성을 높였다.- 함수 정의부에도 파라미터 리스트가 많으면
ByVal rng As Range, _
같은 식으로 줄을 나누어 인수별로 구분한다.
실무 적용 시 문제 해결
- 디버깅 편의
복잡한 오류가 날 때, 조건문이나 인수 목록이 한 줄로 길게 늘어져 있으면 디버깅이 매우 어렵다. 줄 넘김 규칙을 잘 지키면 한눈에 조건과 인수의 구성을 파악할 수 있어 오류를 빨리 찾는다. - 협업 효율
팀원이 긴 코드를 건드려야 할 때, 어디서부터 어디까지가 하나의 문장인지 알기 어려우면 생산성이 떨어진다. 줄 넘김을 통해 문장 구분이 명확해지므로 협업성이 향상된다. - 리팩토링 유도
줄 넘김 규칙을 적용하다 보면, “이 로직이 너무 복잡해서 줄이 지나치게 길어진다”라는 문제를 알게 되는 경우가 많다. 이때 자연스럽게 함수를 분리하거나 중복 코드를 모듈화하는 식으로 리팩토링이 진행된다. - 코드 리뷰 간편화
코드 리뷰 시, 한 줄에 인수 20개가 몰린 함수를 보게 되면 리뷰어가 집중하기 어렵다. 줄 넘김을 통해 시각적 부담을 줄이고, 주석이나 공백 라인을 적절히 배치하면 리뷰 속도가 개선된다.
VBA 코드 줄 넘김 규칙을 장기적으로 습관화하기
- 모듈을 추가할 때마다
Option Explicit
를 자동 적용하는 것처럼, 줄 넘김 규칙도 처음부터 습관으로 들이는 편이 좋다. - 팀 내부에서 “조건문이 80자 이상 길면 언더스코어(_)로 분할한다” 등 가이드라인을 설정하면 코드 품질이 한결 높아진다.
- 긴 문자열, 긴 조건문, 긴 함수 호출부 등의 케이스별로 예시를 만들어 신입 개발자나 협업 인원에게 배포하면, 통일된 스타일을 유지할 수 있다.
마지막 문단에서 VBA 코드 줄 넘김 규칙 재언급
VBA 코드 줄 넘김 규칙을 충실히 이행하면, 길고 복잡한 매크로도 한눈에 이해하기 쉬워지고, 디버깅 시간이 대폭 단축된다. 언더스코어(_)를 올바르게 배치하고, 조건문이나 인수 리스트를 보기 좋게 정렬해두면 유지보수나 협업 과정에서 얻는 이점이 크다. 특히 VBA 코드 줄 넘김 규칙은 단순 미관이 아니라, 프로젝트 전체의 코드 신뢰도를 높이고 오류 발생을 줄이는 데 직접 기여하므로, 꾸준히 익혀서 업무 효율을 한층 높이길 권장한다.
반응형
'#4 VBA > #4.1 환경설정 및 기본개념' 카테고리의 다른 글
Application 개체 살펴보기 완벽 정리 (0) | 2024.12.29 |
---|---|
VBA와 다른 오피스 제품 연관성 완벽 정리 (1) | 2024.12.29 |
매크로 보안 경고 대처 방법 완벽 정리 (0) | 2024.12.29 |
VBA 코드 창 분할과 정렬 완벽 정리 (0) | 2024.12.29 |
VBA 프로젝트 구조 이해 완벽 정리 (0) | 2024.12.29 |