programing

사용자 정의 함수에 도구 설명을 추가하는 방법

mailnote 2023. 5. 16. 22:51
반응형

사용자 정의 함수에 도구 설명을 추가하는 방법

Excel 2007에서 사용자 정의 함수에 설명 및 매개 변수 힌트를 추가하려면 어떻게 해야 합니까?내장 함수에 대한 함수 호출을 입력하면 Excel에 설명과 매개 변수 목록인 도구 설명이 표시됩니다.정의한 기능에 대해서도 동일한 작업을 수행하고 싶습니다.

수식 삽입 마법사뿐만 아니라 수식 상자에서 키를 누르면"=myFun(""("툴팁이 표시되는 것과 마찬가지로"=average("

VBA 도움말, MSDN 및 Excel 및 VBA 전용 포럼에 대한 도움말이 없으므로 이는 분명 가망이 없습니다.

툴팁 솔루션이 아닌 적절한 해결 방법:

UDF =MyUDF(그런 다음 +를 누르면 기능 파라미터가 표시됩니다.이러한 매개 변수에 의미 있는 이름이 있는 한 적어도 실행 가능한 프롬프트는 있습니다.

예를 들어, 다음과 같습니다.

=MyUDF(+ CTRL + Shift + A

다음과 같습니다.

=MyUDF(sPath, sFileName)

Stephen Bullen의 Professional Excel Development는 UDF를 등록하는 방법을 설명하며, 이를 통해 Function Arguments 대화상자에 설명을 표시할 수 있습니다.

Function IFERROR(ByRef ToEvaluate As Variant, ByRef Default As Variant) As Variant
    If IsError(ToEvaluate) Then
        IFERROR = Default
    Else
        IFERROR = ToEvaluate
    End If
End Function

Sub RegisterUDF()
    Dim s As String
    s = "Provides a shortcut replacement for the common worksheet construct" & vbLf _
    & "IF(ISERROR(<expression>), <default>, <expression>)"

    Application.MacroOptions macro:="IFERROR", Description:=s, Category:=9
End Sub

Sub UnregisterUDF()
    Application.MacroOptions Macro:="IFERROR", Description:=Empty, Category:=Empty
End Sub

보낸 사람: http://www.ozgrid.com/forum/showthread.php?t=78123&page=1

함수 인수 대화 상자를 표시하려면 함수 이름을 입력하고 를 누릅니다.또는 수식 표시줄에서 "fx" 기호를 클릭합니다.

여기에 이미지 설명 입력

이에 대한 답변을 수락한 것으로 알고 있습니다. 하지만 이제 Excel-DNA 추가 기능을 통해 또는 자체 추가 기능 내에 인텔리센스 서버를 등록하여 다른 Excel 기능과 같은 인텔리센스 스타일 완료 상자를 팝업할 수 있는 솔루션이 있습니다.여기 보세요.

이제 저는 C# 방식을 선호합니다. 엑셀-DNA 안에서 구현하는 모든 클래스가 훨씬 단순합니다.IExcelAddin되며 addin이 포함되어 있습니다.AutoOpen()그리고.AutoClose()추가 기능을 열거나 닫을 때 실행합니다.필요한 것은 다음과 같습니다.

namespace MyNameSpace {
    public class Intellisense : IExcelAddIn {
        public void AutoClose() {
        }
        public void AutoOpen() {
            IntelliSenseServer.Register();
        }
    }
}

그런 다음(이것은 Github 페이지에서 가져온 것입니다), 기능에 Excel DNA 주석을 사용하면 됩니다.

[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 DNA 주석을 사용하여 주석을 달면 인텔리센스 서버가 인수 이름과 설명을 선택합니다.

여기에 이미지 설명 입력 여기에 이미지 설명 입력

VBA와 함께 사용하는 예도 있지만, 저는 VBA에 그다지 관심이 없어서 그 부분들을 사용하지 않습니다.

또한 이 매크로를 사용하여 인수 및 UDF에 설명을 할당할 수 있습니다.

Private Sub RegisterMyFunction()
Application.MacroOptions _
    Macro:="SampleFunction", _      '' Your UDF name
    Description:="calculates a result based on provided inputs", _
    Category:="My UDF Category", _  '' Or use numbers, a list in the link below
    ArgumentDescriptions:=Array( _  '' One by each argument
        "is the first argument.  tell the user what it does", _
        "is the second argument.  tell the user what it does")
End Sub

켄달과 여기 원래 게시물에 대한 크레딧.UDF 카테고리의 경우

기능의 "도움말" 버전을 만들 뿐입니다.자동 완성 기능 바로 아래에 표시됩니다. 사용자는 지침을 위해 인접 셀에서 대신 선택할 수 있습니다.

Public Function Foo(param1 as range, param2 as string) As String

    Foo = "Hello world"

End Function

Public Function Foo_Help() as String

Foo_Help = "The Foo function was designed to return the Foo value for a specified range a cells given a specified constant." & CHR(10) & "Parameters:" & CHR(10)
& "  param1 as Range   :   Specifies the range of cells the Foo function should operate on." & CHR(10)
&"  param2 as String  :   Specifies the constant the function should use to calculate Foo"
&" contact the Foo master at master@foo.com for more information."

END FUNCTION

캐리지 리턴은 워드랩으로 가독성을 향상시킵니다. 일석이조입니다. 이제 이 기능은 문서화되어 있습니다.

@윌의 방법이 가장 좋습니다.저처럼 Excel DNA를 사용하지 않은 사람들을 위해 세부 사항에 대해 몇 줄만 추가해주세요.

https://github.com/Excel-DNA/IntelliSense/releases 에서 Excel-DNA IntelliSense 다운로드

두 가지 버전이 있습니다. 하나는 64용입니다. Excel 버전을 확인하십시오.저의 경우, 저는 64버전을 사용하고 있습니다.

Excel/Devel/Add-Ins/Browse를 열고 ExcelDna를 선택합니다.IntelliSense 64.xll.

시트를 삽입하고, 이름을 "IntelliSense"로 변경하고, 함수 설명을 https://github.com/Excel-DNA/IntelliSense/wiki/Getting-Started 로 추가합니다.

그럼 맛있게 드세요!:)

여기에 이미지 설명 입력

안타깝게도 UDF 인수에 대한 도구 설명을 추가할 수 있는 방법이 없습니다.
Remou의▁to▁▁at▁for▁to▁more▁approach▁complex에다▁the'▁but▁descript▁a▁you▁▁rem▁reply▁fullerou▁find있니습▁canou수찾방을을식접의에서 Function Wizard에 대한 설명에 대한 더 완전하지만 더 복잡한 접근법을 찾을 수 있습니다.
http://www.jkp-ads.com/Articles/.asphttp ://www.jkp-ads.com/Articles/RegisterUDF00.asp

저는 @ScottK의 접근법을 시도했는데, 처음에는 제 기능적인 UDF의 부차적인 기능으로, 그 다음에는 문제가 생겼을 때 독립형 _Help suffix version으로 시도했습니다(아래 참조)나중에 생각해 보면, 도구 설명을 볼 수 있을 정도로 주의를 기울이는 사용자에게는 후자의 접근 방식이 더 낫고 기능 코드를 혼란스럽게 만들지 않습니다.

저는 만약 부주의한 사용자가 곰곰이 생각하는 동안 기능 이름을 입력하고 괄호를 닫는다면, 도움이 나타나서 그가 가는 길에 있을 것이라고 생각했습니다.하지만 포맷할 수 없는 텍스트 뭉치를 하나의 셀에 버리는 것은 좋은 생각처럼 보이지 않았습니다.대신 함수가 인수가 없는 셀에 입력된 경우(예:

   = interpolateLinear() 
or
   = interpolateLinear_Help()

도움말 텍스트와 함께 msgBox가 열립니다.AmsgBox는 최대 1000자로 제한되며 1024자일 수 있습니다.하지만 그것으로 충분합니다 (거의 8^/) 나의 과도하게 조작된 보간 기능.그렇지 않으면 언제든지 사용자 양식을 열고 시내로 이동할 수 있습니다.

처음 메시지 상자가 열렸을 때는 성공한 것처럼 보였습니다.하지만 몇 가지 문제가 있습니다.물론 사용자는 _Help 접미사 UDF에 대해 인수 없이 함수를 입력해야 합니다.

문제는 워크북의 관련 없는 부분에서 작업하는 동안 msgBox가 여러 번 연속적으로 다시 열린다는 것입니다.말할 필요도 없이, 그것은 매우 짜증납니다.때때로 순환 참조 경고가 나올 때까지 계속됩니다.계산해 보세요.만약 UDF가 세포 공식을 바꿀 수 있다면, 저는 그것을 닫기 위해 그렇게 했을 것입니다.

Excel이 공식을 반복해서 재계산해야 한다고 느끼는 이유를 모르겠습니다. _Help 독립 실행형 버전이나 (도움말 모드에서) 전체 버전 모두 선례나 종속자가 없습니다.지원서가 없습니다.어디서든 변덕스러운 진술.물론 함수는 호출 셀에 값을 반환합니다.그게 리콜을 유발하는 건 아닐까요?하지만 그것이 UDF가 하는 일입니다.저는 당신이 값을 반환할 수 없다고 생각하지 않습니다.

UDF에서 워크시트 공식을 수정할 수 없기 때문에 호출 셀(UDF에서 값을 변경할 수 있는 유일한 문자열)로 특정 문자열(값)을 반환하려고 했습니다. 다음 주기에 application.caller를 사용하여 셀 값을 검사하고, 내 문자열을 찾아내고, 도움말 메시지를 다시 표시하지 않도록 알아야 한다고 생각했습니다.그 당시에는 좋은 생각인 것 같습니다. 효과가 없었습니다.잠이 부족한 상태에서 바보 같은 짓을 했나 봐요.저는 여전히 그 생각을 좋아합니다.문제가 해결되면 업데이트하겠습니다.저의 빠른 해결책은 도움말 상자에 다음과 같은 줄을 추가하는 것이었습니다. "긴급한 경우에만 도움을 요청하십시오. 문제가 되는 공식을 삭제하여 문제를 해결합니다.

그 동안 저는 애플리케이션을 사용해 보았습니다.매크로 옵션 접근 방식.꽤 쉽고, 전문적으로 보입니다.해결해야 할 문제가 하나 있습니다.그 접근법에 대해서는 나중에 별도의 답변을 올리겠습니다.

답 주위에 많은 춤이 있습니다.UDF 컨텍스트 도움말을 추가할 수 있지만 모듈을 내보내고 텍스트 편집기에서 내용을 편집한 다음 VBA로 다시 가져와야 합니다.다음은 Chip Pearson의 예입니다.코드 속성 추가

언급URL : https://stackoverflow.com/questions/4262421/how-to-put-a-tooltip-on-a-user-defined-function

반응형