티스토리 뷰

VBA

[Excel][VBA] 사용자 정의 함수 재계산

어린왕자1234 2021. 11. 24. 14:07

▶ 워크시트 함수의 재계산

   활성시트 어느 한 셀이 변경(재계산)될 때마다 전체 수식 재계산 실행

   Application.Volatile True  설정 상태

 

▶ 사용자 정의 함수 재계산

   함수의 인수가 변경될 때만 함수 재계산

   ※ 워크시트 함수처럼 재계산 구현 하기

       : 사용자 정의 함수 내에 Application.Volatile True 추가

워크시트 함수 Rand함수 구현 Function NonStaticRand()
    Application.Volatile True
    NonStaticRand = Rnd
End Function

☞ 강제  재계산 : Ctrl + Alt + F9

 

■ 인수를 전달하는 경우와 전달하지 않는 경우의 차이

인수 전달 인수 미전달 ( 비 추천 )
Function DoubleCell2(cell)
    ' 인수에 2를 곱한 값을 반환
    DoubleCell2 = cell * 2
End Function
Function DoubleCell()
    ' 수식입력셀의 B열에 2를 곱한값 반환
    DoubleCell = Cells(ActiveCell.Row, 2) * 2
End Function
인수에 해당되는 셀의 값을 변경시 수식적용셀의 값이 자동  업데이트됨 인수를 전달할 수없으므로 강제 재계산으로만 반환값 변경됨
## 수식 드래그 복사 시 비정상 데이터 생성