Excel 사용자 지정 함수 도구 설명에 대한 탐구
이 질문은 된 질문 전에 있지만, 각 시간은 허용 대답은 간단하게 사용하는 기능 설명을 제공하기 위해 사임입니다 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 UDF IntelliSense support for both Excel-DNA add-ins and VBA functions is now being tested. See the Getting Started page on GitHub for instructions.
How about
- Capture inputting text on key press event of cell. like this
- Check if the text matches with custom functions.
- If matches, then show something like label or shape to pretend be a tooltip. like this
Is this acceptable?
It is a little ugly but easier.
What is XLL?
An XLL is a DLL that exports several procedures that are called by Excel or the Excel Add-in Manager. http://msdn.microsoft.com/en-us/library/office/bb687861.aspx
How you develop the XLL?
Excel XLL SDK with Visual C++ (or anything that can compile a DLL and call the SDK procedures)
Where I can find a quick guide for creating a simple XLL?
How I get tooltips?
- Implement your function as a procedure and export it
- Implement and export procedure xlAutoOpen(void) - http://msdn.microsoft.com/en-us/library/office/bb687860.aspx
- xlAutoOpen just needs to call xlfRegister - http://msdn.microsoft.com/en-us/library/office/bb687900.aspx
- For tooltips, special attention for:
pxArgumentText, pxFunctionHelp, pxArgumentHelp1
Sadly, the Analysis Toolpak add-in doesn't have tooltips either.
My solution was wrong, but with wrong information posted by the original poster. Showing a picture with BINOMDIST, if his link clearly shows that this is not a function of ANALYS32.xll.
이것은 내가 불가능한 질문을 풀려고했다는 것을 의미합니다. 포스터가 요청한 것을 할 수있는 XLL이 없기 때문입니다. XLL의 도구 설명을 표시하는 Excel 버전을 찾으면 알려주십시오.
XLL 동작을 모방하기 위해 포스터가 요청한 내용에 대해 ANALYS32.xll이 수행하는 작업과 관련하여 내 대답이 가장 정확하다고 확신합니다.
참고 URL : https://stackoverflow.com/questions/16903587/the-quest-for-the-excel-custom-function-tooltip
'programing tip' 카테고리의 다른 글
C / C ++에서 바이트의 비트 순서를 바꾸는 가장 간단한 방법은 무엇입니까? (0) | 2020.08.21 |
---|---|
JointsWP4 (SASS) : 고정 속성 변경 (0) | 2020.08.21 |
gitignore에서 선행 슬래시를 사용하는 경우 (0) | 2020.08.21 |
지속적인 통합을 수행 할 때 최고의 분기 전략? (0) | 2020.08.21 |
통합 된 Markdown WYSIWYG 텍스트 편집기 (0) | 2020.08.21 |