Function Procedure - Heeyoung-Ahn/Excel_VBA GitHub Wiki

Function Procedure

  • 프로시저 내 코드를 실행하고 결과값을 반환
    (참조) Sub Procedure: 프로시저의 코드를 실행
  • 프로시저의 구문에 Function Procedure 이름으로 값을 반환하는 코드가 포함되어 있어야 함
  • Function Procedure는 워크시트 또는 다른 프로시저에서 사용할 수 있음
  • 생략가능한 인수는 Optional로 선언하며 생략할 경우의 기본값을 지정해야 함
  • ByVal vs. ByRef
  • Sample
Option Explicit

Function listCustomer(rngDB As Range, Optional lngAmt As Long = 100) As String
    Dim strCustomer As String
    Dim rng As Range
    
    Application.Volatile False
    For Each rng In rngDB
        If rng.Value >= lngAmt Then
            strCustomer = strCustomer & rng.Offset(0, -1).Value & ", "
        End If
    Next rng
    If Len(strCustomer) > 0 Then
        listCustomer = Left(strCustomer, Len(strCustomer) - 2)
    Else
        listCustomer = vbNullString
    End If    
End Function

Sub callFunctionTest(rngA As Range, lngA As Long)
    MsgBox listCustomer(rngA, lngA)    
End Sub

Sub callSubTest()
    Call callFunctionTest(Range(“B2”, Cells(Rows.Count, 2).End(xlUp)), 100)    
End Sub