VBA을 사용하면 일반 함수처럼 워크시트에서 사용할 수 있는 사용자 지정 함수(User Defined Function)를 만들 수 있습니다. 이는 기존 Excel 함수가 충분하지 않을 때 유용합니다.
User Defined Function(UDF)은 표준 Excel 기능에는 없는 사용자 생성 함수입니다.
이 예에서는 다른 Excel 함수와 유사하게 워크시트의 계산에 사용할 수 있는 사용자 지정 IF 함수를 만듭니다.
셀 (C2)에 값 ("YES")이 있는 경우 (B2)의 값을 표시하려면 수식 =IF(C2="YES",B2,0)에서 IF 함수를 사용할 수 있습니다.
이 경우 우리의 목표는 =IF(C2가 녹색 배경,B2,0을 가짐)을 수행하고 다음과 같이 작성하는 함수를 만드는 것입니다: =IF_GREEN(C2,B2):
자체 UDF 함수 생성을 시작해 보겠습니다.
Function IF_GREEN(paid As Range, amount) End Function
인수:
이 경우 검사에서 FALSE이 반환되면 값은 항상 0이 되므로 이에 대한 인수를 지정할 이유가 없습니다.
색상이 올바른지 확인하려면 필요한 색상이 포함된 셀을 사용할 수 있습니다.
Function IF_GREEN(paid As Range, amount) green_color = Sheets("Sheet1").Range("K1").Interior.color End Function
하지만 셀에 따른 의존성을 피하기 위해 간단히 원하는 색상의 번호를 사용하겠습니다.
Function IF_GREEN(paid As Range, amount) green_color = 5296274 '녹색 End Function
셀의 배경색 번호를 결정하려면 셀을 선택하고 다음 매크로를 실행하세요.
Sub test_color() MsgBox ActiveCell.Interior.color End Sub
이제 우리가 해야 할 일은 IF을 사용하여 셀의 색상을 확인하는 것뿐입니다.
Function IF_GREEN(paid As Range, amount) Application.Volatile green_color = 5296274 '녹색 If paid.Interior.color = green_color Then '만약 사실이라면 IF_GREEN = amount Else '만약 거짓말이라면 IF_GREEN = 0 End If End Function
이제 함수를 사용할 준비가 되었습니다.
그러나 셀 채우기 변경은 재계산을 트리거하는 이벤트가 아닙니다. Excel에서 값을 다시 계산하도록 하려면 빈 셀을 선택하고 삭제를 클릭하거나 클릭할 때 모든 항목을 새로 고치는 새로 고침 버튼("Refresh")을 추가하면 됩니다.
Sub refresh_macro() Application.Calculate End Sub
다음은 동일한 함수를 작성하는 단축된 방법입니다.
Function IF_GREEN(paid As Range, amount) Application.Volatile IF_GREEN = 0 '만약 거짓말이라면 If paid.Interior.color = 5296274 Then IF_GREEN = amount '만약 사실이라면 End Function
여기를 클릭하여 이 예제가 포함된 Excel 파일을 다운로드할 수 있습니다: 🢃