본문 바로가기
  • 안녕하세요! 금융, 책, 코딩을 기록합니다
'코'딩/VBA

엑셀 VBA (기초2)

by 금책코 2025. 5. 4.

 

 

안녕하세요! 

 

 

오늘은 이전 엑셀VBA (기초1) 글에 이어서 조금 더 구체적으로 VBA의 다양한 함수들과 기능들에 대해 짧은 형식으로 글을 작성해보려고 합니다. 

 

 

1) 기본적인 함수 선언 및 코드 특징 

 

VBA에서 코드를 짤 때 가장 큰 특징 중 하나는 코드 시작과 끝을 직접 선언해주어야 한다는 것입니다. 

 

직접 코드를 보는 것이 이해가 빠르리라 생각되어, 예시를 통해 설명드리도록 하겠습니다.  

'예시코드

' 코드의 시작을 선언 
Public Function a()

a = 10

If a > 5 Then
Range("A5") = "a가 5보다 큽니다."
End If

' 코드의 끝을 선언
End Function

 

다음과 같은 예시코드를 보면 'Public Function a()'로 코드의 시작을 선언을 해주고

 

'End Function'으로 코드의 종료를 선언해준 것을 볼 수 있습니다. 

 

그렇다면 Public Function의 의미가 무엇일까요?

 

 

이를 이해하기 위해서는 Public과 Function을 나누어서 보아야 합니다.   

 

먼저 Public은 해당 코드를 작성하고 있는 모듈뿐만 아니라, 타 모듈에서도 함께 쓸 수 있도록 설정해주는 것입니다.

 

즉 Public을 통해  'a' 함수를 다른 모듈에서도 함께 사용할 수 있도록 선언해주는 것이죠.

 

이와 달리 타 모듈에서는 해당 함수를 사용하지 못하게 선언하려면 'Public'이 아닌 'Private'를 작성해줘야 합니다.

 

 

한편 Function은 해당 코드에서 값을 반환하는 내용이 있을 때 사용해야 합니다. 

 

즉 'a'함수는 Function이 붙은 것을 통해 코드 내용에 값을 반환하는 내용이 있다는 것을 알 수 있습니다. 

 

이와 달리 만약 값을 반환하는 기능이 없으면 'Function'이 아닌 'Sub'를 사용 합니다. 

 

 

마지막으로 함수 이름은 'a' 옆에 붙은 소괄호 '()'의 의미는 함수 내에서 필수 매개변수를 선언하는 것입니다. 

 

예를 들면 엑셀에서 VLOOKUP 함수에서 최소 3개의 변수를 선언해줘야 사용할 수 있는 것처럼 말이죠. 

 

만약 필수로 필요한 매개변수가 없다면, 예시처럼 빈 괄호'()'로 작성해주시면 됩니다. 

 

이를 정리하면 VBA에서 함수의 형태는 다음과 같이 4가지 케이스로 나뉠 수 있겠습니다. 

'Case1 : 다른 모듈에서 사용할 수 있고, 값 변환 내용이 없는 경우 
Public Sub a()

End Sub 


'Case2 : 다른 모듈에서 사용할 수 있고, 값 변환 내용이 있는 경우 
Public Function b()

End Function 


'Case3 : 다른 모듈에서 사용할 수 없고, 값 변환 내용이 없는 경우 
Private sub c()

End sub 


'Case4 : 다른 모듈에서 사용할 수 없고, 값 변환 내용이 있는 경우 
Private Function d()

End Function

 

 

 

 

2) IF문

 

다른 프로그램 언어와 마찬가지로 VBA 또한 IF문을 가지고 있습니다. 

 

그리고 같은 IF문이더라도 상황에 따라 조금씩 다른 형태로 사용할 수 있고, 이를 4가지로 나누어 설명드리겠습니다.

 

 

2-1) 기본 IF문 

 

가장 먼저 설명드릴 것은 기본 IF문입니다. 

 

기본 IF문의 구조는

'

If 조건 Then

실행식

End If 

 '

입니다.

 

이번에도 예시 코드를 통해 자세히 설명드리겠습니다. 

Public Function a()

a = 10

' 만약 a가 5보다 크다면 
If a > 5 Then
' A5 셀에 'a가 5보다 큽니다.' 라는 내용 작성 
Range("A5") = "a가 5보다 큽니다."
' If문의 끝 선언 
End If

End Function

 

 

예시코드에서는 'a>5'가 조건에 해당하고, Range("A5") = "a가 5보다 큽니다." 가 실행문이며,

 

마지막에 있는 End If로 If문이 끝난 것을 선언된 점을 볼 수 있습니다.   

 

End If의 경우 해당 내용이 없으면 If문인 실행되지 않고 오류를 뱉어냅니다.

 

따라서 If문에 반드시 필요한 부분으로 반드시 작성해주셔야 합니다. 

 

또한 예시코드에서 볼 수 있듯이 실행문은 조건문의 내용이 참일 경우에 실행됩니다.

 

 

한편 추가적인 팁으로는 다른 프로그래밍 언어와 다르게 들여쓰기(Tab)가 필수가 아님을 볼 수 있습니다 

 

하지만 코드의 가독성을 위해 기본적으로 들여쓰기를 습관화 하시는 것을 추천드립니다.

 

또한 코드에서 영어의 대소문자를 구분하지 않습니다! 

 

 

2-2) Else가 있는 IF문 

 

Else가 있는 If문은 조건식의 내용이 참이 아닌 경우 실행하려는 코드가 있다면 사용할 수 있습니다. 

 

예시 코드를 조금 수정해서 설명 드리겠습니다.

Public Function a()

a = 2

If a > 5 Then
	Range("A5") = "a가 5보다 큽니다."

Else
	Range("A5") = "a가 5보다 크지 않습니다."

End If


End Function

 

다음과 같은 예시에서 a는 2로 정해져 있기 때문에,

 

If a > 5 then 바로 밑에 줄의 내용인

'a가 5보다 큽니다.' 가 아닌, 

 

Else문 바로 밑에 줄의 내용인

 A5셀에 'a가 5보다 크지 않습니다.' 라는 내용이 입력 될 것입니다.

 

 

 

2-3) ElseIf가 있는 IF문 

 

ElseIf를 통해 If 조건식 Then의 참, 거짓뿐만 아니라 새로운 조건식을 걸어줄 수 있습니다.

 

이번에도 예시 코드를 수정하여 설명드리겠습니다. 

 

Public Function a()

a = 5

If a > 5 Then
	Range("A5") = "a가 5보다 큽니다."

	ElseIf a = 5 Then
		Range("A5") = "a가 5입니다."

Else
	Range("A5") = "a가 5보다 크지 않습니다."

End If


End Function

 

다음과 같은 예시에서 a는 5이기 때문에 If a > 5 then 의 조건문에 해당하지 않고, 

 

ElseIf a = 5 Then 조건문에 해당하므로 

 A5셀에 'a가 5입니다.' 라는 내용이 입력 될 것입니다.

 

 

2-4) 다중 IF문

 

다중 IF문은 사실 IF문 안의 IF문이 있는 것을 의미합니다.

 

이것 또한 예시 코드를 수정하여 설명드리겠습니다. 

 

Public Function a()

a = 2

If a > 5 Then

	Range("A5") = "a가 5보다 큽니다."

 		If a < 3 Then

 			Range("A5") = "a가 3보다 작습니다."

 		End If

End If

End Function

 

다음과 같은 예시에서 a는 2이기 때문에 첫 번째 If문인 If a > 5 then 의 조건문에 해당하지 않고, 

 

두 번째 If문인 If a < 3 조건문에 해당하므로 

 

 A5셀에 'a가 3보다 작습니다.' 라는 내용이 입력 될 것입니다.

 

사실 다중 IF문에서는 새로운 개념이 등장하지 않지만,

 

Case를 따로 빼서 설명드린 이유는 End If의 개수를 If문 개수에 동일하게 맞춰줘야 한다는 것을 설명드리기 위해서입니다.

 

즉 다중 If문에서 만약 If문이 총 2개라면, 'End If'의 구문도 두 번 있어야 합니다. 

 

 

그럼 이상으로 VBA에 대해 함수 선언과 IF문을 설명하는 글을 마치도록 하겠습니다.

 

앞으로도 좀 더 깊은 내용의 VBA의 다양한 함수와 기능들에 대해 서술하겠습니다. 

 

긴 글 읽어주셔서 감사합니다. 조금이라도 도움이 되었으면 좋겠습니다!

''코'딩 > VBA' 카테고리의 다른 글

엑셀 VBA (기초3)  (0) 2025.05.25
엑셀 VBA (기초1)  (0) 2025.04.13