Excel UDF: 배열을 반환하지 않고 셀 수정
Excel에서 사용자 정의 함수(UDF)의 제한 사항 중 하나는 셀이나 통합 문서 속성을 직접 수정합니다. 그러나 UDF가 셀 수정을 수행할 수 있도록 하는 복잡하긴 하지만 해결 방법이 있습니다.
Windows 및 애플리케이션 타이머를 사용하여 UDF 제한 우회
Windows 타이머와 Application.OnTime 타이머의 영리한 조합인 UDF가 사용됩니다. Windows 타이머는 Excel에서 셀 수정을 허용할 때 코드를 안전하게 실행하는 Application.OnTime 타이머를 시작합니다.
구현
UDF는 Windows 타이머 루틴을 호출합니다. 특정 시간 매개변수가 있는 Application.OnTime 타이머입니다. 그런 다음 Application.OnTime 루틴은 UDF 자체 내에서 수행할 수 없는 코드를 실행합니다.
예제 코드
다음 코드는 이 해결 방법을 보여줍니다. 구현됨:
Public Function AddTwoNumbers(ByVal Value1 As Double, ByVal Value2 As Double) As Double AddTwoNumbers = Value1 + Value2 ' Schedule the Windows timer mWindowsTimerID = SetTimer(0&, 0&, 1, AddressOf AfterUDFRoutine1) End Function Public Sub AfterUDFRoutine1() ' Schedule the Application.OnTime timer mApplicationTimerTime = Now Application.OnTime mApplicationTimerTime, "AfterUDFRoutine2" End Sub Public Sub AfterUDFRoutine2() ' Perform modifications outside the UDF '... End Sub
주의 사항
이 해결 방법에는 제한이 없습니다. 이를 사용하는 UDF는 휘발성이 아니거나 휘발성 함수 또는 휘발성 공식/함수를 포함하는 참조 셀을 전달해서는 안 됩니다. 또한 셀 수정은 타이머가 안전한 환경(열린 대화 상자 또는 셀 편집 없음)에서 트리거될 때만 발생합니다.
위 내용은 Excel UDF가 배열을 반환하지 않고 셀을 수정할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!