먼저 기능적 UDF의 부수 기능으로 @ScottK의 접근 방식을 시도한 다음 문제가 발생했을 때 독립형 _Help 접미사 버전으로 시도했습니다 (아래 참조). 돌이켜 보면 후자의 접근 방식이 더 낫습니다. 사용자가 도구 팁을 볼 수있을만큼주의를 기울이고 기능 코드를 복잡하게 만들지 않는 것이 더 분명합니다.
부주의 한 사용자가 함수 이름을 입력하고 생각하는 동안 괄호를 닫으면 도움이 나타나고 곧바로 갈 것이라고 생각했습니다. 그러나 서식을 지정할 수없는 단일 셀에 많은 텍스트를 덤프하는 것은 좋은 생각처럼 보이지 않았습니다. 대신 인수가없는 셀에 함수를 입력 할 때 즉
= interpolateLinear()
or
= interpolateLinear_Help()
도움말 텍스트와 함께 msgBox가 열립니다. msgBox는 ~ 1000 자, 어쩌면 1024 자까지로 제한됩니다.하지만 지나치게 속인 보간 함수에는 충분합니다 (간신히 8 ^ /). 그렇지 않은 경우 언제든지 사용자 양식을 열고 마을로 이동할 수 있습니다.
처음 메시지 상자를 열었을 때 성공한 것처럼 보였습니다. 그러나 몇 가지 문제가 있습니다. 물론 사용자는 인수없이 함수를 입력해야합니다 (_Help 접미사 UDF의 경우 +1).
큰 문제는,이다 MSGBOX 통합 문서의 관련이없는 부분에서 작업 자발적 동안 연속적으로 여러 번 다시 열립니다. 말할 필요도없이 매우 성가신 일입니다. 때때로 순환 참조 경고를받을 때까지 계속됩니다. 그림을 이동. UDF가 셀 수식을 변경할 수 있다면 그것을 종료하기 위해 그렇게했을 것입니다.
Excel이 수식을 계속해서 다시 계산해야한다고 느끼는 이유를 모르겠습니다. _Help 독립형 또는 전체 버전 (도움말 모드)에는 선례 또는 종속 항목이 없습니다. 어디에도 application.volatile 문 이 없습니다 . 물론이 함수는 호출 셀에 값을 반환합니다. 아마도 재 계산을 유발할까요? 그러나 그것이 UDF가하는 일입니다. 나는 당신이 할 수 없다고 생각합니다 값을 반환합니다.
UDF에서 워크 시트 수식 을 수정할 수 없기 때문에 특정 문자열 ( 값)을 호출 셀 (UDF에서 값을 변경할 수있는 유일한 셀) 에 반환하려고했습니다 . 다음주기에서 application.caller 를 사용하는 셀 값 , 내 문자열을 찾아 내고 도움말 메시지를 다시 표시하지 않도록합니다. 당시에는 좋은 생각 같았지만 작동하지 않았습니다. 수면이 부족한 상태에서 어리석은 짓을했을 수도 있습니다. 나는 여전히 아이디어가 마음에 듭니다. 문제를 해결할 때 업데이트하겠습니다. 내 빠른 해결책은 도움말 상자에 다음 줄을 추가하는 것이 었습니다. " 긴급 상황에서만 도움을 구하십시오. 문제가되는 공식을 삭제하여 불행을 끝내십시오.
그 동안 Application.MacroOptions 접근 방식을 시도했습니다. 매우 쉽고 전문적으로 보입니다. 해결해야 할 한 가지 문제입니다. 나중에 그 접근 방식에 대한 별도의 답변을 게시 할 것입니다.