이 질문은 된 질문 전에 있지만, 각 시간은 허용 대답은 간단하게 사용하는 기능 설명을 제공하기 위해 사임입니다 Application.MacroOptions
( VBA6 ) ( VBA7를 )하지만 내 문제가 해결되지 않는 있도록이 정보는 실제로 툴팁으로 표시되지 않습니다.
목표
우리 모두가 원하는 것은 어떤 수단 (VBA, VSTO 또는 COM 추가 기능) 으로든 사용자 지정 함수를 정의하고 사용자에게 함수 및 해당 매개 변수에 대한 팝업 / 도구 설명 설명의 이점을 제공하는 것입니다. 인라인 또는 수식 입력 줄의 모든 기본 제공 Excel 함수에 대해 나타납니다.
이러한 요구에 대한 널리 받아 들여지는 대답은 커스텀 함수로는 불가능하다는 것이지만 저는 그 믿음에 도전하고 싶습니다.
문제
현재 내가 본 최고의 방법은 함수 대화 상자 (공식 막대의 fx 버튼)를 불러올 때 함수와 매개 변수 설명이 아래와 같이 나타나도록 함수를 정의하는 것입니다 (종종 위의 MacroOptions 호출 사용).
보시다시피 이것은 많은 매개 변수가있는 복잡한 함수입니다. 사용자가이 “함수 인수”대화 상자와이를 표시하는 방법을 모르고 대신 Excel의 표준 도구 설명에만 익숙한 경우 수식 이름 만 표시되고 추가 도움말은 표시되지 않습니다.
필요한 매개 변수를 올바르게 제공 할 기회가 없습니다. (물론 문서를 읽지 않고는 사용자가 없습니다.)
이제 고급 사용자는 Ctrl+ Shift+ 를 입력 A하면 다음과 같이 자동 완성 된 함수 매개 변수 목록이 부여 된다는 것을 알 수 있습니다 .
그러나 물론 위와 동일한 문제가 있습니다. 표준 엑셀 사용자는 첫 번째 이미지의 기본 동작에만 사용되며 해당 기능을 배우지 않았을 것입니다.
이 시점에서 이것이 왜 충분하지 않은지 명확해야하며 우리는 모든 내장 함수가 가지고있는 것을 원합니다. 사용자에게 함수 사용 방법을 알려주는 인라인 도구 설명입니다.
티즈
처음에는 기본 Excel 응용 프로그램 기능을 제외하고는 이것이 가능하지 않다고 확신했을 것입니다. 추가 기능 및 VBA는 확장 성 기능이며이 도구 설명은 단순히 확장 할 수 없습니다. 그러나이 이론은 Analysis Toolpak 추가 기능의 존재로 인해 어려움을 겪습니다. 물론 Microsoft에서 빌드되었지만 ANALYS32.xll은 VB, C, C ++ 및 C #에서 생성 할 수있는 것과 같은 독립 실행 형 XLL 추가 기능입니다. 아니나 다를까,이 XLL이 응용 프로그램에로드 될 때 기능 이 가능한 네이티브 엑셀 함수 같은 도구 조언을 만드는 :
이 정보가 어떻게 든이 XLL 파일에 인코딩되어 Excel로 전달되는 경우 자체 추가 기능으로 복제 할 수있는 방법이 있습니까? 이제 분석 툴팩에서 진행되는 모든 작업을 역 설계 할 수 있는지 확인하고 디 컴파일에 대해 조금 가르치기 시작할 시점입니다.
당신이 도울 수있는 방법
이 문제에 대해 공개적으로 사용 가능한 모든 정보를 조사했다고 거의 확신합니다. 누군가 내가 이것에 도움이 될 수있는 내가 모르는 것을 알고 있다면, 자유롭게 차임하십시오. 저는 컴파일 된 dll / xll을 리버스 엔지니어링하는 것에 매우 익숙하지 않습니다. 그래서 누군가가 Analysis32.xll의 로컬 복사본을 열고 싶어한다면 사용자 정의 함수 정의로 무슨 일이 벌어지고 있는지 알아내는 데는 많은 의무가 있습니다. 그렇지 않으면 막 다른 골목을 모두 밟고 내가 찾은 것을보고 할 때까지 계속해서이 문제를 조사 할 것입니다.
답변
나는 이것을 구현 하는 Excel-DNA IntelliSense 프로젝트 로 GitHub에 개념 증명 프로젝트를 게시했습니다 .
UI 자동화 클래스를 사용하여 적절한 Excel 사용자 인터페이스 이벤트를 모니터링하면 적절한 경우 양식이 표시됩니다.
코드는 Excel-DNA 추가 기능으로 래핑되어 있으며 내 Excel 2013 / Windows 8 컴퓨터에서 작동합니다. 다른 구성 (Windows Server 2008의 64 비트 Excel 2010)에서 테스트 한 결과 심각한 문제가있었습니다.
다음과 같이 Excel-DNA 속성으로 정의 된 C # 함수의 경우 :
[ExcelFunction(Description =
"A useful test function that adds two numbers, and returns the sum.")]
public static double AddThem(
[ExcelArgument(Name = "Augend",
Description = "is the first number, to which will be added")]
double v1,
[ExcelArgument(Name = "Addend",
Description = "is the second number that will be added")]
double v2)
{
return v1 + v2;
}
함수 설명을 모두 얻습니다.
함수를 선택하면 인수 도움말이 표시됩니다.
멋져 보이지만 여전히 매우 불안정하고 내 컴퓨터에서만 작동하며 때로는 Excel과 충돌합니다. 그래도 시작일지도 모르지만 …
2014 년 5 월 9 일 업데이트 :
이전 Excel 및 Windows 버전에서 인수가 작동하도록하는 방법을 알아내는 데 약간의 진전이있었습니다. 그러나 모든 것을 신뢰할 수있게하려면 여전히 많은 작업이 필요합니다. 도움이 필요한 사람은 저에게 직접 연락하십시오.
2016 년 6 월 18 일 업데이트 :
Excel-DNA 추가 기능 및 VBA 기능에 대한 Excel UDF IntelliSense 지원이 현재 테스트 중입니다. 지침은 GitHub의 시작하기 페이지를 참조하십시오 .
답변
어때
- 셀의 키 누름 이벤트에 대한 입력 텍스트를 캡처합니다. 이렇게
- 텍스트가 사용자 정의 함수와 일치하는지 확인하십시오.
- 일치하는 경우 레이블 또는 모양과 같은 것을 표시하여 도구 설명으로 가장하십시오. 이렇게
이것이 허용됩니까?
조금 못 생겼지 만 더 쉽습니다.
답변
XLL이란 무엇입니까?
XLL은 Excel 또는 Excel 추가 기능 관리자에서 호출하는 여러 프로 시저를 내보내는 DLL입니다. http://msdn.microsoft.com/en-us/library/office/bb687861.aspx
XLL을 어떻게 개발합니까?
Visual C ++가 포함 된 Excel XLL SDK (또는 DLL을 컴파일하고 SDK 프로 시저를 호출 할 수있는 모든 것)
간단한 XLL을 만들기위한 빠른 가이드는 어디에서 찾을 수 있습니까?
툴팁은 어떻게 얻습니까?
- 함수를 프로 시저로 구현하고 내보내기
- 구현 및 수출 절차 (무효) xlAutoOpen – http://msdn.microsoft.com/en-us/library/office/bb687860.aspx
- – xlAutoOpen은 xlfRegister 호출해야
http://msdn.microsoft.com/en-us/library/office/bb687900.aspx을 - 툴팁의 경우 다음 사항에 특히주의하십시오.
pxArgumentText, pxFunctionHelp, pxArgumentHelp1
안타깝게도 Analysis Toolpak 추가 기능에도 도구 설명이 없습니다.
내 솔루션은 잘못되었지만 원본 포스터에 잘못된 정보가 게시되었습니다. BINOMDIST와 함께 사진을 보여주는 경우, 그의 링크 가 이것이 ANALYS32.xll의 기능이 아님을 분명히 보여주는 경우 .
이것은 내가 불가능한 질문을 풀려고했다는 것을 의미합니다. 포스터가 요청한 것을 할 수있는 XLL이 없기 때문입니다. XLL의 도구 설명을 표시하는 Excel 버전을 찾으면 알려주십시오.
XLL 동작을 모방하기 위해 포스터가 요청한 내용에 대해 ANALYS32.xll이 수행하는 작업과 관련하여 내 대답이 가장 정확하다고 확신합니다.