엑셀 사용자 정의 함수에 대하여 - Visual Basic Editor 프로시저(함수) 작성법 (2024.12.27 Updated)

컴활 1급 실기용으로 간략하게 Visual Basic에 대해 알아보도록 하겠다.

책을 보건대 컴활 1급에서는 대략 사용자 정의 함수를 작성하고 간단한 조건문(IF문, SELECT문) 정도를 그 내용으로 적도록 하는 것으로 보인다.

 

일단 비주얼 베이직에서는 우리가 흔히 말하는 함수(function)를 프로시저(procedure)라고 하는 거 같다.

반환값이 있는 프로시저(Function 프로시저)와 없는 프로시저(Sub 프로시저)가 있는데,

우리가 컴활 1급 실기에서 사용하게 될 것은 반환값이 있는 프로시저(Function 프로시저)일 것이다.

(그 반환값을 통해 셀에 결과값을 입력해야 하기 때문)

 

기본적인 Function 프로시저 작성 문법을 알아보자.

 

기본 골자는 아래와 같다.

Public Function 함수명(인수1, 인수2, ...)

End Function

 

Public은 다들 알다시피 접근제한자이다.

함수 시작 시 Function 함수명(인수, ...)으로 시작한다.

함수 끝에는 End Function으로 끝난다.

 

그 안에 함수 내용을 적는다.

 

간단한 예시를 통해 알아보도록 하자.

문제 유형 1. 조건문 없이 반환만 하는 경우

이 경우 IF문, SELECT문 등의 사용 없이 내부에 반환값만 할당해주면 된다.

ex.

Public Function fn총매출(단기, 할인율, 판매량)
    fn총매출 = 단가 * (1 - 할인율) * 판매량
End Function

 

타 프로그래밍 언어와 달리 별도의 Return 문이 없는 것을 볼 수 있다.

이 경우, End Function으로 끝나면 "가장 최근에 함수 이름에 할당한 값"이 그 함수의 반환값이 된다.

여기서는 fn총매출에 할당한 값이 반환된다.

즉, Return 단가 * (1 - 할인율) * 판매량과 같다.

 

이제 간단한 조건문이 포함된 프로시저를 작성해보자.

문제 유형 2. 조건문이 포함된 경우

ex1. IF문

Public Function ks작업평가(MD, MH) '비주얼 베이직에서는 이렇게 따옴표로 주석을 처리한다.
    If MH/(MD * 8) >= 0.8 Then 'If ~ Then 으로 조건을 시작한다.
        ks작업평가="원만" 
    ElseIf MH/(MD * 8) >= 0.6 Then '조건이 두 개 이상이면 ElseIf ~ Then을 사용한다. Else와 If를 붙여서 씀에 주의한다.
        ks작업평가="적절"
    Else '상단의 조건에 전부 맞지 않는 경우 Else로 들어온다. Else에는 Then을 붙이지 않는다.
        ks작업평가="속도조절"
    End If 'End If로 조건을 끝낸다.
End Function

 

ex2. SELECT문

Public Function ks작업평가(MD, MH)
    Select Case MH / (MD * 8) 'Select문은 Select Case ~ 로 시작한다.
        Case Is >= 0.8 'Case 100 과 같이 사용하면 정확히 100에 맞아야 하고, 조건으로 비교문을 사용하고 싶으면 Case Is 키워드를 사용한다.
            ks작업평가="원만"
        Case Is >= 0.6
            ks작업평가="적절"
        Case Else '위의 모든 조건에 맞지 않는 경우
            ks작업평가="속도조절"
    End Select 'End Select로 Select문이 끝난다.
End Function

 

대부분의 문제는 위의 케이스를 벗어나지 않을 것으로 사료된다.

 

프로시저 작성 시 인수 부분의 As 키워드에 대해

Public Function kb기본급(입사일 As Date, 근무년수 As Integer, 급여증가분 As Double)
    ' 입사일은 날짜 타입으로, 근무년수는 정수, 급여증가분은 실수로 처리됨
    ' 이 함수에서 날짜 계산을 할 수 있게 됩니다.
End Function

 

위와 같이 As 키워드 뒤에 자료형을 지정하면 해당 자료형으로만 인수를 받을 수 있게 된다.

아래는 비주얼 베이직에서의 자료형에 대한 글이다.

https://learn.microsoft.com/ko-kr/dotnet/visual-basic/language-reference/data-types/

 

데이터 형식 요약 - Visual Basic

자세한 정보: 데이터 형식 요약(Visual Basic)

learn.microsoft.com