Excel - VBA

UDF 함수 마법사 띄우기

EGTools 2023. 1. 5. 12:30

소개하는 내용은 아래 출처에 대한 설명입니다.

https://fastexcel.wordpress.com/2014/01/26/inserting-a-udf-and-launching-the-function-wizard-from-vba/

 

Inserting a UDF and Launching the Function Wizard from VBA

In a previous post I suggested you could do this by entering the function using VBA into the selected cell using a comma as the argument to the function, for example =LISTDISTINCTS.SUM(,) , and the…

fastexcel.wordpress.com

 

셀에 함수 마법사를 띄우는 방법은 기본적으로 아래와 같다.

Range.FunctionWizard

 

그러면 특정 함수에 대한 함수마법사를 띄우려면 어떻게 할까?

FunctionWizard 다이얼로그에는 설정하는 부분이 없어서 지정하기 어렵다.

 

먼저 함수를 셀에 입력하고 함수 마법사를 띄워보자

UDF가 아닌 내장함수를 아래처럼 내용없이 입력하면 오류로 함수 입력 자체가 안된다. (강력한 함수 오류방지 기능,,,)

Selection.Formula = "=UDF_NAME()"
Selection.FunctionWizard

 

내용은 맞는 것 같은데 실제 입력은 이상하게 된다.

첫번째 실행에서는 함수가 입력되고 함수마법사가 함수 지정없이 나온다.

두번째 이미 함수가 입력된 그 자리에서 실행하면 정상적으로 해당 UDF에 대한 함수마법사가 나온다.

?? 왜 바로는 안될까??

 

그래서 꼼수를...

함수마법사를 불러오는 것만 따로 프로시저를 만들고 OnTime을 이용해서 지연 실행을 해보자

Sub rbnFunctionWizard(ctrl As IRibbonControl)
    Selection.Formula = "=UDF_NAME()"
    Application.OnTime Now + TimeValue("00:00:01") / 4, "showFunctionWizard"
End Sub

Private Sub showFunctionWizard()
    Selection.FunctionWizard
End Sub

 

이제 정상적으로 UDF에 대한 함수마법사가 실행된다.