>  기사  >  백엔드 개발  >  Excel UDF가 배열을 반환하지 않고 셀을 수정할 수 있습니까?

Excel UDF가 배열을 반환하지 않고 셀을 수정할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-24 21:48:47882검색

Can Excel UDFs Modify Cells Without Returning Arrays?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.