매크로에서 서브 루틴을 사용할 수 있다는 것을 이미 알고 있습니다. VBA를 사용하면 매크로에서 사용할 수있는 함수를 정의 할 수도 있습니다. 함수와 서브 루틴의 차이점은 함수는 값을 반환 할 수있는 반면 서브 루틴은 반환 할 수 없다는 것입니다. 다음 매크로를 고려하십시오.

Sub Macro1()

TooMany = TestFunc     If TooMany Then MsgBox "Too many columns selected"

End Sub
Function TestFunc()

TestFunc = False     If Selection.Columns.Count > 10 Then        TestFunc = True     End If End Function

매크로 (Macro1)는 TestFunc 함수를 호출합니다. 이 함수는 수행하는 테스트에 따라 False 또는 True 값을 반환합니다. 그런 다음 Macro1은 반환 된 값에 따라 작동합니다. 함수 이름은 등호 오른쪽에 나타날 수 있습니다. 이것은 기능을 매우 강력하고 모든 프로그램의 중요한 부분으로 만듭니다. 함수 내에서 결과는 함수 자체의 이름 인 TestFunc에 할당됩니다. 이것은 함수가 반환하는 값입니다.

서브 루틴과 마찬가지로 매개 변수를 함수에 전달할 수도 있습니다.

이것은 다음 매크로에 설명되어 있습니다.

Sub Macro1()

A = 12.3456     MsgBox A & vbCrLf & RoundIt(A)

End Sub
Function RoundIt(X) As Integer     RoundIt = Int(X + 0.5)

End Function

이 간단한 매크로 (Macro1)는 숫자를 정의한 다음 메시지 상자를 사용하여 숫자와 숫자를 RoundIt 함수에 전달한 결과를 표시합니다. 출력은 12.3456과 12입니다. 매개 변수는 괄호 안에 함수에 전달되어야합니다. 또한 함수는 전달 된 것과 동일한 변수 이름을 사용하지 않습니다. 이는 VBA가 X 값 (함수에 필요한 것)을 다시 할당하여 A 값 (프로그램이 함수에 전달하는 것)과 일치하기 때문입니다.

매개 변수를 함수에 전달할 때 기억해야 할 중요한 점은 프로그램이 함수가 예상하는 것과 동일한 수의 매개 변수를 전달해야하며 매개 변수는 유형과 순서가 일치해야한다는 것입니다.

_ 참고 : _

이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶으면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.

link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요].

_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.

이 팁 (11765)은 Office 365의 Microsoft Excel 2007, 2010, 2013, 2016, 2019 및 Excel에 적용됩니다. 여기에서 Excel의 이전 메뉴 인터페이스에 대한이 팁 버전을 찾을 수 있습니다.

link : / excel-Understanding_Functions_in_Macros [매크로의 함수 이해].