본문 바로가기

공부/VBA

[VBA] 함수 재계산 시점 조절 - Application.Volatile True

사용자 정의 함수는 엑셀 고유의 worksheet함수와 유사하게 동작한다. 즉, 함수의 인수가 변경되었을 경우에만 다시 계산된다. 실제 사용시에는 해당 셀의 내용이 변경될 때 마다 다시 계산되도록 할 필요가 있을 것이다.

이 경우, 아래의 명령문을 함수 프로시저에 추가해 주면 된다. 주의 할 점은 아래 명령어가 수행된 이후부터 자동으로 재계산되도록 설정된다는 것이다. 따라서 애초에 이 명령문이 포함된 함수가 한번이라도 불려져야 의미가 있다.
Application.Volatile True

Function NonStaticRand()
'    Returns a random number that
'    doesn't change when recalculated
    Application.Volatile True
    NonStaticRand = Rnd
End Function

위와 같이 설정시 엑셀 고유함수인 RAND()와 유사하게 동작한다.

'공부 > VBA' 카테고리의 다른 글

VBA on-line 도움말이 나오지 않을 경우 확인 사항  (0) 2011.04.14
[VBA] ByVal 키워드 사용  (0) 2011.03.08
[VBA] 프로그래밍 기초  (2) 2011.03.04